gpt4 book ai didi

python - 使用 pytest 管理测试数据的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-28 20:21:49 25 4
gpt4 key购买 nike

我需要为几个相关的应用程序创建自动化测试,并且遇到了测试之间的测试数据管理问题。问题是相同的数据必须在多个应用程序和/或不同的 API 之间共享。现在我有了 pytest 的下一个结构,它对我很有用,但我怀疑在 conftest.py 中使用测试数据管理是正确的方法:

整体结构如下:

tests/
conftest.py
app1/
conftest.py
test_1.py
test_2.py
app2/
conftest.py
test_1.py
test_2.py
test_data/
test_data_shared.py
test_data_app1.py
test_data_app2.py

这是 tests/conftest.py 中的测试数据示例:

from test_data.test_data_shared import test_data_generator, default_data

@pytest.fixture
def random_email():
email = test_data_generator.generate_random_email()
yield email
delete_user_by_email(email)

@pytest.fixture()
def sign_up_api_test_data(environment, random_email):
"""
environment is also fixture, capture value from pytest options
"""
data = {"email": random_email, "other_data": default_data.get_required_data(), "hash": test_data_generator.generate_hash(environment)}
yield data
do_some_things_with_data(data)

为此目的使用 fixture 非常舒服,因为后置条件、范围和其他甜蜜的东西(请注意,应用程序有很多逻辑和关系,所以我不能简单地硬编码数据或将其迁移到 json 文件中)类似的东西可以在 tests/app1/conftest.py 和 tests/app2/conftest.py 中找到,用于相应地在 app1 和 app 2 中使用的数据。

所以,这里有两个问题:1. conftest.py变成了一堆代码的怪物2. 据我所知,对测试数据使用 conftest 是一种糟糕的方法,还是我错了?

提前致谢!

最佳答案

我使用 conftest.py 作为测试数据。
Fixture 是向测试提供测试数据的推荐方式。
conftest.py 是在多个测试文件之间共享 fixture 的推荐方法。

至于#2。我认为测试数据使用 conftest.py 是可以的。

现在是#1,“conftest.py 变得太大了”。

特别是对于顶级 conftest.py 文件,在 test/conftest.py,您可以将该内容移动到一个或多个 pytest 插件中。由于 conftest.py 文件可以被认为是“本地插件”,因此将它们转换为插件的过程并不难。

参见 https://docs.pytest.org/en/latest/writing_plugins.html

关于python - 使用 pytest 管理测试数据的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54330834/

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