rap*_*sli 5 python pytest flask
这实在是太奇怪了。我有以下简单的烧瓶应用程序:
- root
- myapp
- a route with /subscription_endpoint
- tests
- test_az.py
- test_bz.py
Run Code Online (Sandbox Code Playgroud)
test_az.py 和 test_bz.py 看起来都一样。有一个设置(取自https://diegoquintanav.github.io/flask-contexts.html),然后是一个简单的测试:
import pytest
from myapp import create_app
import json
@pytest.fixture(scope='module')
def app(request):
from myapp import create_app
return create_app('testing')
@pytest.fixture(autouse=True)
def app_context(app):
"""Creates a flask app context"""
with app.app_context():
yield app
@pytest.fixture
def client(app_context):
return app_context.test_client(use_cookies=True)
def test_it(client):
sample_payload = {"test": "test"}
response = client.post("/subscription_endpoint", json=sample_payload)
assert response.status_code == 500
Run Code Online (Sandbox Code Playgroud)
运行 pytest 将运行这两个文件,但 test_az.py 将成功,而 test_bz.py 将失败。http请求将返回404错误,这意味着test_bz无法在应用程序中找到路由。如果我单独运行它们,那么它们就会成功。这很奇怪!似乎第一个测试在某种程度上影响了第二个测试。
我实际上添加了第三个测试 test_cz.py,它也会失败。所以只有第一个会运行。我觉得这与那些固定装置有关,但不知道去哪里看。
sim*_*kus -1
创建一个conftest.py
固定装置,例如客户端固定装置,并在两个测试中使用相同的固定装置?
现在,如果您说提供的代码是另一个文件中相同的测试示例,那么您正在为客户端创建 2 个装置。我会首先清理它并创建一个conftest.py
包含所有固定装置的 1,然后在您的测试中使用它们,这可能会对您有所帮助。
pytest
另请参阅Flask 文档中所述的如何使用