我在同一个文件中有大约 10 个测试,每个测试都有以下设置按顺序执行
import pytest
@pytest.mark.order1
.
.
.
@pytest.mark.order10
Run Code Online (Sandbox Code Playgroud)
但是测试永远不会按照分配的顺序运行。它们总是按照排列的顺序运行。我缺少什么吗?
甚至@pytest.mark.tryfirst也没有用。我注意到的一件事是,@pytest.mark.order从未出现在建议中,而至少@pyetst.mark.tryfirst在 pycharm 中。
看起来您正在使用 pytest-ordering。那个包确实是“alpha 质量”——我写了它,我没有花太多时间来更新它。
与其用 装饰@pytest.mark.order1,不如尝试用 装饰@pytest.mark.run(order=1)。我相信Read the Docs 文档已经过时了。
除了标记测试之外,pytest 标记没有做任何特殊的事情。-m这些标记只能用于使用CLI 选项过滤它们的目的。
这就是 pytest 单独可以对标记做的所有事情。好吧,还有一些小事情,比如参数化和skipif。
具体来说,没有这样的特殊标记tryfirst。它是钩子声明的参数,但这不适用于测试/标记。
一些外部或内部插件可以添加依赖于标记的特殊行为。
Pytest 按照发现(收集)的顺序执行测试。在某些情况下,pytest 可以重新排序(重新分组)测试,以便更好地使用夹具。至少,这是声明的;不确定是否真的完成了。
假设这些测试在设计上是完全独立的。如果您的测试相互依赖,例如使用先前测试用例中的被测系统的状态,那么您的测试设计就会出现问题。该状态应该以某种方式转换为固定装置。
如果您仍然想强制测试的某些依赖项或顺序(与测试设计原则相反),则必须安装一个基于标记的测试排序插件,例如http://pytest-ordering.readthedocs.io/ en/develop/,并根据其支持的标记名称标记测试。
| 归档时间: |
|
| 查看次数: |
4587 次 |
| 最近记录: |