我在同一个文件中有大约10个测试,每个测试都有以下设置按顺序执行
MSBuild.Microsoft.VisualStudio.Web.targets
但测试从未按照分配的顺序运行。它们总是按照它们的排列顺序运行。我缺少什么?
即使 @ pytest.mark.tryfirst 也无效。我注意到的一件事是, @ pytest.mark.order 在至少 @ pyetst.mark.tryfirst 时从不出现在建议中在pycharm中。
答案 0 :(得分:2)
看起来你正在使用pytest-ordering。那个包确实是“alpha质量” - 我写了它并且我没有花太多时间来保持它的更新。
尝试使用@pytest.mark.order1
进行装饰,而不是使用@pytest.mark.run(order=1)
进行装饰。我相信Read the Docs documentation已经过时了。
答案 1 :(得分:1)
除标记测试外,pytest标记没有做任何特殊操作。这些标记只能用于使用-m
CLI选项过滤它们。
这是所有pytest单独可以做的标记。好吧,还有很少的东西,如参数化和SKIPIF的。
具体而言,没有tryfirst
这样的特殊标记。它是钩子声明的参数,但这不适用于测试/标记。
某些外部或内部插件可能会添加依赖于标记的特殊行为。
Pytest按照发现(收集)的顺序执行测试。在某些情况下,pytest可以重新排序(重新组合)测试以获得更好的夹具使用。至少,这是宣布;不确定是否真的完成了。
假设测试完全独立于设计。如果您的测试彼此依赖,例如使用以前测试用例中测试的系统状态,您的测试设计有问题。该状态应该以某种方式转换为固定装置。
如果您仍想强制某些依赖项或测试顺序(与测试设计原则相反),则必须根据标记(例如http://pytest-ordering.readthedocs.io/en/develop/)为测试排序安装插件,并标记根据其支持的商标名称进行测试。
答案 2 :(得分:1)
答案 3 :(得分:0)
您似乎正在使用pytest-ordering。确保您已经在环境中安装了pytest-ordering,在此处为文档https://github.com/ftobia/pytest-ordering,并尝试使用以下修饰
@ pytest.mark.run(order = 1)
答案 4 :(得分:0)
我也多次遇到相同的问题,并尝试了所有在线可用方法。但是,对我有用的是使用pip3 install pytest-ordering
安装订购并重新启动pycharm。