У меня есть файл со всеми пройденными тестами, который хранится в тестовом файле.Файл содержит выходные данные pytest -rp
PASSED foo.py::TestFoo::()::test_foo
PASSED foo.py::TestFoo::()::test_bar
Я хочу собрать все тесты, а затем пометить их как pytest_collection_modifyitems
, если полное имя теста совпадает с любым тестом в файле.Есть ли способ, с помощью которого я могу сформировать имя в вышеуказанном формате?Мой вариант использования - иметь список пройденных тестов в файле и пометить эти тесты маркером после сбора всех тестов.Файл имеет тысячи строк, и поэтому я не могу использовать pytest -k
в командной строке для этого.
def pytest_collection_modifyitems(items):
locations = set()
with open('python3_tests.txt', 'a') as f:
for location in locations:
locations.add(location.strip())
for item in items:
cls_name = '::'.join(item.location[2].split('.', 1)) # tuple of (file_name, line number, cls_name.function_name)
if cls_name in locations:
item.add_marker('py3')