添加自定义 pytest 标记以根据输入跳过测试
Adding custom pytest marker to skip test based on input
我想添加一个自定义 pytest 标记,只要在目录中找到特定文件,它就会跳过测试:
@pytest.mark.file_exists("my_file.txt")
def test_mytest():
assert True
我希望test_mytest
仅在“my_file.txt”位于根目录时执行。该文档指定了如何注册自定义标记,但没有指定如何定义其行为。我将如何定义 file_exists
的行为?
感谢任何帮助。
逻辑必须在pytest_runtest_setup中实现,您还必须在pytest_configure中声明,例如。有关详细信息,请查看 https://docs.pytest.org/en/stable/how-to/mark.html:
conftest.py
from pathlib import Path
import pytest
def pytest_configure(config):
config.addinivalue_line("markers", "file_exists(filename): description")
def pytest_runtest_setup(item):
filenames = [mark.args[0] for mark in item.iter_markers(name="file_exists")]
package_dir = Path(__file__).parent
for filename in filenames:
path = package_dir / filename
if not path.is_file():
pytest.skip("test requires {!r}".format(filename))
return
我想添加一个自定义 pytest 标记,只要在目录中找到特定文件,它就会跳过测试:
@pytest.mark.file_exists("my_file.txt")
def test_mytest():
assert True
我希望test_mytest
仅在“my_file.txt”位于根目录时执行。该文档指定了如何注册自定义标记,但没有指定如何定义其行为。我将如何定义 file_exists
的行为?
感谢任何帮助。
逻辑必须在pytest_runtest_setup中实现,您还必须在pytest_configure中声明,例如。有关详细信息,请查看 https://docs.pytest.org/en/stable/how-to/mark.html:
conftest.py
from pathlib import Path
import pytest
def pytest_configure(config):
config.addinivalue_line("markers", "file_exists(filename): description")
def pytest_runtest_setup(item):
filenames = [mark.args[0] for mark in item.iter_markers(name="file_exists")]
package_dir = Path(__file__).parent
for filename in filenames:
path = package_dir / filename
if not path.is_file():
pytest.skip("test requires {!r}".format(filename))
return