限制要在pytest中执行的测试用例的数量

时间:2019-06-21 06:45:17

标签: python pytest

一些背景

  • 我正在用Jenkins执行我的测试用例,现在我正在用Jenkins做一些POC。
  • 就我而言,有500多个测试用例需要一个小时才能执行。
  • 我只想执行一个测试用例,只是想知道我在进行Jenkins POC时没有犯任何错误。

是否有一种方法来限制要执行的测试用例的数量?像..

  pytest -vv --limit 1

使用conftest.py?

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式限制测试数量。例如,您可以通过传递其全名作为参数来执行单个测试:

$ pytest tests/test_spam.py::TestEggs::test_bacon

将仅运行模块test_bacon中类TestEggs中的测试方法tests/test_spam.py

如果您不知道确切的测试名称,可以通过执行找到它

$ pytest --collect-only -q

您可以结合使用这两个命令来执行有限的测试:

$ pytest -q --collect-only 2>&1 | head -n N | xargs pytest -sv

将首先执行N收集的测试。

如果需要,您也可以自己实现--limit参数。示例:

def pytest_addoption(parser):
    parser.addoption('--limit', action='store', default=-1, type=int, help='tests limit')


def pytest_collection_modifyitems(session, config, items):
    limit = config.getoption('--limit')
    if limit >= 0:
        items[:] = items[:limit]

现在上述命令等于

$ pytest --limit N