严格按顺序运行python unittest用例?



我想按顺序而不是并行地运行我的Python unittest类的各个测试(函数)。我可以告诉它是并行的,因为第一个函数/test将一条记录写入TinyDB,而另一个函数/test(失败)需要读取新记录并进行存在测试。

那么,我如何强制严格的顺序测试执行呢?如果这是不可能的,我可以在创建多个测试时强制执行严格的顺序处理吗?(我不喜欢这样做,因为我希望模块和它们的test_modules之间有1:1的关系。)

unittest的答案

我可以通过创建一个主测试py文件来实现严格的执行。命名为run_all_tests.py

模块有单独的类。我一个一个地触发它们。

切换到pytest和fixture

无论如何,我不喜欢在函数级别上以复杂/声明的方式控制序列的缺点。因此,我切换到pytest。首先,我喜欢有一个论证显示了序列。这证实了我们的期望:

pytest -setup-show test_myfunction.py

最重要的是,您可以将装饰器@pytest.fixture()应用于之前运行的方法。这并不一定能帮助我们理解第一行的序列。此外,它还提醒我们要进行独立测试——使用@pytest.fixture()注释方法作为测试函数的参数。通过这种方式,我们为单个功能设计了一个固定装置。不要误以为是单位测试的setUp()方法。它们在每个方法之前运行。每一个。setUpClass()在调用任何测试函数之前运行一次。

对于那些仍然想要声明顺序的人,你可以在这里找到:https://pypi.org/project/pytest-order/, https://github.com/pytest-dev/pytest-order

最新更新