使用pytest
运行测试时,我想执行一些健全性检查。通常,我要检查测试是否可以访问某些可执行文件,以及用户在命令行上提供的选项是否有效。
我发现最接近的东西是使用固定装置,例如:
@pytest.fixture(scope="session", autouse=True)
def sanity_check(request):
if not good:
sys.exit(0)
但这仍然可以运行所有测试。我希望脚本在尝试运行测试之前失败。
答案 0 :(得分:3)
您不需要显式验证命令行选项;这将由arg解析器完成,必要时它将中止执行。至于条件检查,您离解决方案不远。使用
pytest.exit
至立即终止pytest.skip
跳过所有测试pytest.xfail
无法通过所有测试(尽管这是预期的失败,因此不会将整个执行标记为失败)夹具示例:
@pytest.fixture(scope='session', autouse=True)
def precondition():
if not shutil.which('spam'):
# immediate shutdown
pytest.exit('Install spam before running this test suite.')
# or skip each test
# pytest.skip('Install spam before running this test suite.')
# or make it an expected failure
# pytest.xfail('Install spam before running this test suite.')
答案 1 :(得分:1)
如果要在整个测试方案之前运行健全性检查,则可以使用conftest.py文件-https://docs.pytest.org/en/2.7.3/plugins.html?highlight=re
只需将具有相同作用域和自动使用选项的功能添加到conftest.py:
@pytest.fixture(scope="session", autouse=True)
def sanity_check(request):
if not good:
pytest.exit("Error message here")