Для запуска тестов с помощью `unittest` в Python есть несколько способов:
- Использование командной строки:
Самый распространенный способ - это запуск тестов из командной строки. Для этого используется модуль `unittest` и его discovery functionality.
Пример:
python -m unittest discover -s test_directory -p "test_*.py"
Где:
- `python -m unittest` - вызывает модуль unittest.
- `discover` - указывает, что нужно использовать механизм автоматического обнаружения тестов.
- `-s test_directory` - (необязательно) указывает директорию, в которой искать тестовые файлы (по умолчанию текущая директория).
- `-p "test_*.py"` - (необязательно) задает шаблон имени тестовых файлов (по умолчанию "test*.py").
- `-t top_level_directory` - (необязательно) указывает top-level directory для проекта (для импортов, если они relative).
Если у вас есть один тестовый файл, можно указать его напрямую:
python -m unittest test_module.py
- Запуск тестов из кода Python:
Вы также можете запустить тесты непосредственно из Python скрипта.
Пример:
import unittest
if __name__ == '__main__':
unittest.main()
Этот код запустит все тесты, найденные в текущем модуле, если он запущен как скрипт (например, `python my_test_file.py`). Можно также использовать `unittest.main()` с различными аргументами для настройки поведения. Например, `argv=['first-arg-is-ignored'], exit=False` полезно, если `unittest.main()` вызывается в интерактивной сессии, чтобы предотвратить завершение сессии.
- Использование `unittest.TestSuite` и `unittest.TextTestRunner`:
Более гибкий способ - это создать `TestSuite`, добавить в него нужные тесты и запустить их с помощью `TextTestRunner`.
Пример:
import unittest
def suite():
suite = unittest.TestSuite()
suite.addTest(MyTestCase('test_method_one'))
suite.addTest(MyTestCase('test_method_two'))
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())
Этот способ позволяет более тонко контролировать, какие тесты будут запущены. Также можно использовать `TestLoader` для автоматического поиска тестов и добавления их в `TestSuite`.
Важно:
- Тестовые классы должны наследоваться от `unittest.TestCase`.
- Тестовые методы должны начинаться с префикса `test_`.
- Обычно тестовые файлы называют, например, `test_my_module.py` и кладут их в директорию `tests/`.
Выбор метода запуска зависит от конкретной задачи и предпочтений разработчика. Командная строка наиболее удобна для быстрых запусков всех тестов, в то время как программный запуск дает больше гибкости в настройке.