В настоящее время я использую pytest для автоматизации набора тестов. У меня есть тесты распространяется на несколько каталогов, как показано ниже:pytest: при использовании опции ключевого слова (-k) строка стиля каталога не обрабатывается
|-Root
| |-Dir1
| | |-Test1
| | |-Test2
| | |-Test3
| |-Dir2
| | |-Testa
| | |-Testb
| | |-Testc
| |-Dir3
| | |-TestI
| | |-TestII
| | |-TestIII
Я хотел бы иметь возможность запускать тесты в наборе каталогов, исключая других. Некоторые из каталогов имеют похожие имена, такие как «test_set_1» и «test_set_1_extended». Я хотел бы исключить «test_set_1», но сохранить «test_set_1_extended», поэтому мне нужно будет использовать полный путь в качестве ключевого слова. Я заметил при использовании ключевых слов (опция -k), что pytest не обрабатывает строки структуры каталога в качестве аргумента хорошо. Например, если я пытаюсь окно стиля
py.test -k "not (root\dir1 or dir2)"
Я получаю ошибку синтаксиса:
SyntaxError: неожиданный символ после продолжения строки
С другой стороны, если я пытаюсь Unix стиля
py.test -k "not (root/dir1 or dir2)"
Я получаю ZeroDivisionError:
ZeroDivisionError: i nteger деление по модулю или нуль
Вещи, которые я пробовал включать: вшита строка каталога в одинарных или двойных кавычках:
py.test -k "not ('root/dir1' or dir2)"
py.test -k "not ("root/dir1' or dir2)"
Использования отдельного '-k на':
py.test -k "not root/dir1" -k not dir2)
Использование текущий каталог '.'
py.test -k "not (./root/dir1 or dir2)"
Экранирование косой черты:
py.test -k "not (root\\dir1 or dir2)"
py.test -k "not (root\/dir1 or dir2)"
Ни один из них не решил проблему. Есть ли у кого-нибудь предложения о том, как заставить pytest правильно обрабатывать строку пути?