Val*_*ard 4 python pytest flask
我想试用我的应用程序,这是测试代码:
import sys
import pytest
from flask_simplelogin import SimpleLogin
sys.path.insert(1, '')
from app import app as myapp
#---------------------------------------------------
#SETUP
#---------------------------------------------------
myapp.config['SECRET_KEY'] = 'something-secret'
myapp.config['SIMPLELOGIN_USERNAME'] = 'admin'
myapp.config['SIMPLELOGIN_PASSWORD'] = 'secret'
SimpleLogin(myapp)
@pytest.fixture
def app():
return myapp
@pytest.fixture
def setup_url():
return "http://127.0.0.1:8080/"
def login(client):
return client.post("http://127.0.0.1:8080/login", data=dict(
username="admin",
password="secret"
))
#---------------------------------------------------
#TESTS
#---------------------------------------------------
def test_get_list_campagne(client,setup_url):
resp = login(client)
assert resp.status_code==200
resp = client.get("/Campagne")
assert resp.status_code==200
Run Code Online (Sandbox Code Playgroud)
但它返回一个永久重定向,所以我尝试使用属性“follow_redirects=True”:
def login(client):
return client.post("http://127.0.0.1:8080/login", data=dict(
username="admin",
password="taleinfo"
), follow_redirects=True)
Run Code Online (Sandbox Code Playgroud)
但我认为这只是解决问题的一种方法,我认为在那之后我不会登录。
这里的错误:E AssertionError: assert 308 == 200 E + where 308 = < 263 bytes [308 PERMANENT REDIRECT]>.status_code
我没有发现任何类似的问题。感谢您的帮助。
小智 9
有同样的问题,我通过添加斜线解决了它 /
试试这个代码:
def login(client):
return client.post("http://127.0.0.1:8080/login/", data=dict(
username="admin",
password="secret"
))
Run Code Online (Sandbox Code Playgroud)
如您所见,在登录名中添加斜线/就像这样。我知道这听起来很愚蠢,但试一试并告诉我。