gpt4 book ai didi

python - 运行单个测试有效,但运行多个测试失败 - Flask 和 Pytest

转载 作者:行者123 更新时间:2023-12-04 16:46:07 26 4
gpt4 key购买 nike

这真的很奇怪。我有以下简单的 flask 应用程序:

- root
- myapp
- a route with /subscription_endpoint
- tests
- test_az.py
- test_bz.py
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
运行 pytest,将运行这两个文件,但 test_az.py 会成功,而 test_bz.py 会失败。 http 请求会返回 404 错误,表示 test_bz 在应用中找不到路由。
如果我单独运行它们,那么它们就会成功。这很奇怪!似乎第一个测试在某种程度上影响了第二个测试。
我实际上添加了第三个测试 test_cz.py,它也会失败。所以只有第一个会运行。我觉得这与那些固定装置有关,但不知道在哪里看。

最佳答案

创建一个 conftest.py对于固定装置,例如对于客户端 fixture 并在两个测试中使用相同的 fixture ?
现在,如果您说提供的代码是另一个文件中相同的测试示例,那么您正在为客户端创建 2 个设备。我会先清理它并创建一个 1 conftest.py包含所有装置,然后在您的测试中使用它们,这可能对您有所帮助。
另请查看如何使用 pytest如 Flask 文档中所述

关于python - 运行单个测试有效,但运行多个测试失败 - Flask 和 Pytest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65715103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com