需要使用py.test动态运行标记测试

时间:2014-05-07 01:43:27

标签: automated-tests pytest

我一直在寻找一种在运行时运行选择性测试的方法。发现每个测试都可以使用@pytest.mark进行标记。

import ...

@pytest.mark.feature1

@pytest.mark.priority1

or something like : @pytest.mark(Feature.feature1, Priority.priority2)

def m1

def m2

..

现在我需要运行标记为feature1的测试脚本,而不提供脚本名称。 像(不确定命令)

的东西
py.test -m "feature1"

它应该选择在测试套件中标记为feature1的所有脚本,因为其他脚本也可能被标记为feature2..n

请建议:

  1. 建议是否标记测试并选择运行时间?
  2. 我是否需要有课程来测试?我相信上述方式将标志着完整的测试。
  3. 从完整的测试套件中选择标记测试的命令是什么?
  4. 谢谢!

3 个答案:

答案 0 :(得分:1)

我认为你正在寻找的是py.test的 -m 选项。

用不同标签标记测试后(使用@ pytest.mark。标签,其中标签是feature1或任何你想要的),你可以运行所有标记的feature1测试使用:

py.test -m feature1

这将仅运行标有' feature1'的测试。标签

可以合并标记的测试:

py.test -m "feature1 or feature2"

或使用not跳过,例如

py.test -m "not (feature1 or feature2)"

答案 1 :(得分:0)

我认为您正在寻找@pytest.mark.skipif  这将根据您放入标记的条件跳过测试。您可以在if条件中使用字符串跳过所需的测试

答案 2 :(得分:0)

好的,在这种情况下,这可能是答案 pytest -k string 选择包含其名称中的字符串并运行它的所有测试