【发布时间】:2021-03-25 07:19:50
【问题描述】:
我有一个名为 BaseTest 的基类,我的所有测试用例都继承自它。
每个 TestCase 都有 X 个测试和一个方法 - different_configuration()
而不是为每个测试创建 test_xyz 和 test_xyz_different(这意味着我在代码中的测试加倍,如果我有 x 个不同的配置,甚至更多)
有没有办法让基类有一些东西,甚至是一个固定装置,每个现有测试将创建/运行另一个测试,但会在开始时调用 self.different_configuration()。
额外信息 - 我有一个 dict 作为具有配置的属性,并且有一个配置,对于每个测试,我想测试两个可用选项。
self.different_configuration() 只是在测试之前更改配置值。
插图 -
def test_x(self):
self.run_and_verify()
def test_x_different_configuration(self):
self.different_configurations()
self.run_and_verify()
所以对于每个现有的测试,我都会在开始时使用这个函数调用创建另一个测试,难道没有更简洁的方法来实现它吗?
【问题讨论】:
-
您尝试过使用
pytest.mark.parametrize吗? docs.pytest.org/en/stable/parametrize.html 如果这对您的用例来说还不够,我认为您需要编写一个插件来修改测试集合。 -
如果你想试试测试采集路线,也许你可以使用这个钩子docs.pytest.org/en/stable/…
-
我可以使用参数化来做到这一点,但是对于每个测试我都必须使用相同的值进行参数化,这会很丑陋,这似乎是重复不必要的代码。
-
如何使用那个钩子?我读了一点,但不太明白它对我有什么帮助。
-
您可以将钩子函数放在您的
conftest.py中,它将使用参数session, config, items调用。items是将要执行的测试列表,您可以在其中添加新项目。例如,您可以轻松地复制该列表中的项目,并且测试将被执行多次。但是,我不确定您是否真的可以从那里拨打您的different_configurations。
标签: python pytest python-unittest