foo
- это проект Python с глубоким вложенным каталогом, включая файлы ~ 30 unittest
в разных подкаталогах. Внутри foo
setup.py
я добавил пользовательскую команду "test" внутри
python -m unittest discover foo '*test.py'
Обратите внимание, что в этом режиме unittest
обнаружение.
Так как некоторые тесты очень медленные, я недавно решил, что тесты должны иметь "уровни". Ответ на этот вопрос очень хорошо объяснил, как получить unittest
и argparse
, чтобы хорошо работать друг с другом. Итак, теперь я могу запустить отдельный файл unittest, скажем foo/bar/_bar_test.py
, с
python foo/bar/_bar_test.py --level=3
и выполняются только тесты уровня 3.
Проблема заключается в том, что я не могу понять, как передать пользовательский флаг (в этом случае "--level = 3" с помощью функции "Найти". Все, что я пытаюсь выполнить, например:
$ python -m unittest discover --level=3 foo '*test.py'
Usage: python -m unittest discover [options]
python -m unittest discover: error: no such option: --level
$ python -m --level=3 unittest discover foo '*test.py'
/usr/bin/python: No module named --level=3
Как я могу передать --level=3
отдельным unittests? Если возможно, я бы хотел избежать разделения тестов различного уровня на разные файлы.
Bounty Edit
В предрассветном (точном) решении предлагается использовать переменные системной среды. Это неплохо, но я ищу что-то более чистое.
Изменение тестового бегуна с несколькими файлами (т.е. python -m unittest find foo '* test.py') на что-то другое прекрасно, если:
- Он позволяет генерировать единый отчет для нескольких файлов unittests.
- Он может каким-то образом поддерживать несколько тестовых уровней (либо используя технику в вопросе, либо используя какой-то другой механизм).