python - Pytest 使用可选择的设置夹具运行整个测试套件
问题描述
我想基本上“继承”一个 pytest 套件,以使用相同的测试函数集测试库的不同实现。我正在努力在 Google 和 Stack Overflow 中寻找答案,但我认为我的问题很大一部分是我不知道我想要的正确的 pytest 命名法。
我正在开发一个包含多个接口实现的库。让我们称它们为A
and B
。
我已经针对实现开发了一个相当大的测试套件A
,现在我还想运行相同的套件来B
避免代码重复。
我为每个实现都有一个固定装置,它为A
and的测试实例提供必要的资源B
。
@pytest.fixture(scope='function')
def get_an_A():
yield A(..)
B 的夹具取决于其他一些第 3 方夹具。
@pytest.fixture(scope='function')
def get_a_B(some_other_fixture):
yield B(..)
还有一个很高兴运行的测试套件_either
def test_add_values_should_be_correct(my_A_or_B):
assert my_A_or_B.of(1) + my_A_or_B.of(2) == my_A_or_B.of(3)
我想要做的是构建my_A_or_B
可以提供A
sA
在一个上下文中B
使用该B
夹具并在另一个上下文中使用该夹具的夹具。
理想情况下,我希望能够运行这样的东西:
运行测试套件A
:
> pytest tests/A
运行测试套件B
:
> pytest tests/B
A
然后运行测试套件B
> pytest tests/
有没有办法布置我的测试套件,让我可以做到这一点?
解决方案
最简单的方法是将所有测试放在同一个文件夹中并运行它(在文件名和方法名上,名称必须以test_
前缀开头)
python -m unittest discover <PATH_TO_THE_FOLDER>
推荐阅读
- xml - Log4j2 - 将存档添加到当前配置
- java - JSON Jackson 将字段转换为嵌套字段
- firebase - 如何从 React Native App 中的 Firebase Crashlytics 日志中跟踪确切问题?
- postgresql - PostgreSQL 9.4 到 9.5 升级
- excel - 在输入 excel 掩码上用冒号替换逗号
- r - 如何解决 R markdown 中的“解析错误”?
- php - 循环中 array_merge 导致的慢功能
- c# - C# .Net Firebase - 如何注销?为什么 isEmailVerified 总是返回 false?
- multi-tenant - 租户数据库的数据库密码是多少(Laravel Hyn)
- php - 具有多个条件的laravel 6搜索查询