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.
- Он может каким-то образом поддерживать несколько тестовых уровней (либо используя технику в вопросе, либо используя какой-то другой механизм).