我正在编写一个有两个断言的测试:
1 - 我发送了正确的用户名和密码,如果服务器作为响应发送的标题包含[' Set-Cookie']
,我希望登录方法返回true2 - 我发送了错误的用户名,并希望登录方法返回false,因为[' Set-Cookie']不在request.headers上。
这是我执行请求的位置,并检查Set-Cookie
是否存在。在我的情况下,如果服务器接受登录,则只返回True
。如果我发送了虚假凭据,request.headers
将不会包含Set-Cookie
。
if request.headers['Set-Cookie'] in request.headers:
return True
return False
我的测试只包括检查正确的凭据是否会True
作为回复而错误的False
。
def test_login_user():
assert login_user('right_user_name', 'btcas1A') is True
assert login_user('wrong_user_name', 'btcas1A') is False
当我运行测试时,第一个断言按预期传递。但是,第二个失败了。我得到了:
> assert login_user('right_user_name', 'btcas1A') is True`
E AssertionError: assert False is True`
E + where False = login_user('right_user_name', 'btcas1A')`
我不明白测试失败的地点和原因。似乎是'right_user_name passes'
测试,后来我得到了这个断言错误。有谁知道出了什么问题?
我将不胜感激任何有助于让我走上正确道路,了解测试如何运作以及所有这些因为我还在学习的事情。
更新
def login():
xmlFile = xmltodict.parse(request.data)
if 'LOGIN' not in xmlFile:
print ('Check the xml file used for request.')
return ResponseFiles.loginXmlResponseError
for i in xmlFile['LOGIN']:
if i == 'ANWENDUNG':
user = xmlFile['LOGIN']['ANWENDUNG']
elif i == 'BENUTZER':
user = xmlFile['LOGIN']['BENUTZER']
password = xmlFile['LOGIN']['PASSWORT']
loginPassed = readUserRecordFiles(user, password)
if loginPassed:
return LoginPassed(user)
return LoginError()
如果登录通过方法LoginPassed()
设置cookie并返回响应:
response.set_cookie('sessionid', sessionid, path= '/')
整个过程都有效,我的问题只是编写测试。
更新
我根据[Jon] [1]
的建议修复了if 'Set-Cookie' in request.headers:
它解决了我的问题。