2015-09-18 2 views
0

После того, как я попытался написать тестовые примеры для входа api, когда я пишу test out-side любого класса, тогда он не дает никаких ошибок, но когда я создал класс class TestCase(TestCase): и определил метод def test_login(self):. Он дает пропущенную пароль, но за пределами того же кода работает успешно.Ошибка при запуске: ошибка имени пользователя и пароля при попытке проверить вход в систему api?

from django.test import TestCase 
from django.test import Client 
import json 

#Creating test out side class 


credential=dict() 
c =Client() 
credential["username"]="john" 
credential["password"]="xxx" 
response =c.put('/api/login', data=json.dumps(credential)) 

print("content") 
print(response.content) 

""" 
{"message": "", "result": {"username": "john", "session_key": "xyz"}, "error": 0} 
""" 


print("session_key") 
content = json.loads(response.content) 
key = content['result']['session_key'] 
print key 


#Creating test inside class 


class TestCase(TestCase): 
    def test_login(self): 
     User.objects.create(username="john", password="xxx") 
     credential=dict() 
     c =Client() 
     credential["username"]="john" 
     credential["password"]="xxx" 
     response =c.put('/api/login', data=json.dumps(credential)) 
     content=json.loads(response.content) 
     print 'content' 
     print content 


    {u'message': u'Username and Password mismatch', u'result': {}, u'error': 1} 

Здесь мы можем увидеть сообщение в другой формат для успешного
{"message": "", "result": {"username": "john", "session_key": "xyz"}, "error": 0}

Для Неудачный
{u'message': u'Username and Password mismatch', u'result': {}, u'error': 1}. Перед каждой переменной есть u. Я думаю, что проблема здесь ....

+0

и- там, потому что это юникод строка ... – petkostas

+0

@petkostas Тогда почему не в первом случае, почему я получаю несоответствие пароля, когда я написал тест внутри класса TestCase, но не давая ошибка, когда я написал samething outude class. Пожалуйста, помогите мне на thi – geeks

ответ

0

Tests use a separate database, созданный для этого теста, вы должны создать fixture для заполнения базы данных с пользователем или просто добавить код, чтобы создать один перед login вызова, что-то вроде :

User.objects.create(username="john", password="xxx") 
+0

Где я должен писать 'User.objects.create (username =" john ", password =" xxx ")'? – geeks

+0

в любом месте вашего теста перед вызовом 'login', я предлагаю прямо вверху –

+0

. См. Обновленный вопрос, который я поставил, как указано выше: User.objects.create (username =" john ", password =" xxx ")' in код .. – geeks