pytest标记顺序不起作用

时间:2017-10-06 22:27:11

标签: python pytest

我在同一个文件中有大约10个测试,每个测试都有以下设置按顺序执行

MSBuild.Microsoft.VisualStudio.Web.targets

但测试从未按照分配的顺序运行。它们总是按照它们的排列顺序运行。我缺少什么?

即使 @ pytest.mark.tryfirst 也无效。我注意到的一件事是, @ pytest.mark.order 在至少 @ pyetst.mark.tryfirst 时从不出现在建议中在pycharm中。

5 个答案:

答案 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)

我遇到了同样的问题,您可以使用以下命令对其进行订购:

@pytest.mark.run(order=1)

但是在此之前,请从此site安装它。
这样就可以了。

答案 3 :(得分:0)

您似乎正在使用pytest-ordering。确保您已经在环境中安装了pytest-ordering,在此处为文档https://github.com/ftobia/pytest-ordering,并尝试使用以下修饰

  

@ pytest.mark.run(order = 1)

答案 4 :(得分:0)

我也多次遇到相同的问题,并尝试了所有在线可用方法。但是,对我有用的是使用pip3 install pytest-ordering安装订购并重新启动pycharm。