Edit2: なぜエラーが発生するのか、パスワードが一致しません。これは、テスト データベースにユーザー名とパスワード自体が含まれていないためです。
編集1:
次に、ログインAPIのテストケースを作成しようとしましたが、クラスの外側でテストを作成するとエラーは発生しませんが、クラスを作成 class TestCase(TestCase):
してメソッドを定義するとエラーが発生しますdef test_login(self):
。パスワードの不一致が発生しますが、同じコードの外側で正常に実行されます。
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=john and password=xxx Username and Password mismatch', u'result': {}, u'error': 1}
。
login api は次のように記述されていますが、クラス Test_login 内で test を定義すると、if 部分ではなく、else 部分で実行されます。他の部分では、応答とともにユーザー名とパスワードを出力しようとしました。私は次のような応答を得ています{u'message': u'username=john and password=xxx Username and Password mismatch', u'result': {}, u'error': 1}
ここで、ユーザー名とパスワードが正しいことがわかります。なぜいけないのか?私はネットで同様の問題を調べています。同じ問題について言及していました。したがって、私が見たところ、ユーザー名とパスワードは正しいです。どうしたの ?
バックエンド ログイン API
user = auth.authenticate(username=username, password=password)
if user is not None:
print 'if user is not None:'
msg=Some response
else:
msg = strtemp+' username='+username+' and password='+password+' Username and Password mismatch'
したがって、私が見たところ、ユーザー名とパスワードは正しいです。どうしたの ?