Как запустить код инициализации перед тестами при использовании модуля Python unittest в качестве тестового прогона? - PullRequest
5 голосов
/ 22 декабря 2011

Как пользователь библиотеки может запустить свой собственный код инициализации (например, установить уровни отладки регистраторов) перед запуском тестов, поставляемых с библиотекой? Модуль Python unittest используется в качестве тестового раннера.

Ответы [ 3 ]

2 голосов
/ 27 октября 2012

Вы можете попробовать использовать pytest для запуска юнит-тестов.Если это работает (работает множество тестовых наборов на основе unittest), то вы можете создать небольшой модуль, например «mymod.py», определяющий хук конфигурации pytest:

# content of mymod.py
def pytest_configure():
    import logging
    logging.getLogger().setLevel(logging.WARN)

Если вы сейчас выполните py.testнапример:

$ py.test -p mymmod --pyargs mylib

Затем в пакете "mylib" будут проверяться тесты, и перед их запуском уровень ведения журнала изменяется.Параметр «-p» указывает плагин для загрузки, а «--pyargs» указывает pytest сначала попытаться импортировать аргументы, а не обрабатывать их как имена каталогов или файлов (по умолчанию).

Для получения дополнительной информации: http://pytest.org и http://pytest.org/latest/unittest.html

HTH, хольгер

1 голос
/ 22 декабря 2011

Вы можете выполнить настройку до вызова unittest.main .

Или вы можете создать подкласс тестового набора и запустить метод настройки на уровне класса .

Или вы можете настроить тестирование на обратный вызов пользовательского метода настройки.

0 голосов
/ 27 марта 2019

Ответ на аналогичный вопрос более полезен здесь:

Как запустить определенный код до и после каждого модульного теста в python

Я использовал метод python setUpClasshttps://docs.python.org/2/library/unittest.html#unittest.TestCase.setUpClass

setUpClass()
A class method called before tests in an individual class are run. setUpClass is called with the class as the only argument and must be decorated as a classmethod():

@classmethod
def setUpClass(cls):
    ...

Я запускаю свои тесты так:

python -m unittest discover -v
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...