Pytest - 检查用户名和密码是否返回'设置cookie' - AssertionError

时间:2018-01-02 09:55:30

标签: python pytest

我正在编写一个有两个断言的测试:

1 - 我发送了正确的用户名和密码,如果服务器作为响应发送的标题包含[' Set-Cookie']

,我希望登录方法返回true

2 - 我发送了错误的用户名,并希望登录方法返回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:

它解决了我的问题。

0 个答案:

没有答案