Подтвердить что ты не робот

Python unittest и обнаружение

У меня есть каталоги, в которых есть файлы с именами: test_foo.py

Каждый файл является тестовым.

Я хотел бы

1) Запустите все тесты в каталоге из командной строки. Я использую unittest2, так как мы запускаем Python 2.5.1. Из одного из этих каталогов я попытался ввести его в командной строке:

python -m unittest2 discover -p 'test_*.py'

и несколько разных вариантов. Я не получаю ошибки, но ничего не происходит. Я ожидал, что все тесты во всех тестовых случаях в этом каталоге будут запущены и получат результаты.

2) Я также попробовал иметь script в каталоге, где я это сделал:

loader = unittest2.TestLoader()
t = loader.discover('.')

Если я печатаю переменную t, я могу видеть свои тестовые примеры, но из документов я не могу понять, что делать с объектом-загрузчиком, когда я это сделаю.

4b9b3361

Ответ 1

Как только вы открыли тесты, вы можете запустить их с помощью тестового бегуна.

import unittest2
loader = unittest2.TestLoader()
tests = loader.discover('.')
testRunner = unittest2.runner.TextTestRunner()
testRunner.run(tests)

Запуск вышеуказанного кода распечатает результаты теста до стандартного.

Ответ 2

Я столкнулся с той же проблемой при запуске python -m unittest discover. Вот хороший контрольный список для проверки вашей настройки. Nose является более гибким с разрешенными конфигурациями, но не обязательно лучше.

  • Убедитесь, что все файлы/директории начинаются с test. Не используйте не test-something.py, так как это не допустимое имя модуля python. Используйте test_something.py.

  • Если вы помещаете свои тесты в подкаталог (например, test/), убедитесь, что вы создали файл test/__init__.py, поэтому python будет обрабатывать каталог как пакет.

  • Все определения тестовых случаев класса должны быть расширены unittest.TestCase. Например

    class DataFormatTests(unittest.TestCase)
    

Ответ 3

Дайте, как вы пытаетесь использовать unittest2 из командной строки на Python < 2.7, я думаю, вы, возможно, пропустили заметку на unittest2 страница PyPI:

Примечание

Использование командной строки

В Python 2.7 вы вызываете unittest функции командной строки (включая тест открыть) с помощью python -m unittest <args>. Поскольку unittest - это пакет, и возможность вызова пакетов с помощью python -m ... является новым в Python 2.7, мы не может сделать это для unittest2.

Вместо unittest2 поставляется с scriptмодуль 2. Использование командной строки:

unit2 discover unit2 -v test_module

Существует также копия этого scriptназываемый unit2.py, полезный для Windows который использует расширения файлов, а не shebang, чтобы определить, что программа для выполнения файлов. Оба эти скрипты устанавливаются Distutils.

Вы пробовали unit2 script, который рекомендует эта нота в качестве альтернативы для старых Pythons для "запускать пакет как главную функцию script" Python 2.7? Возможно, его источники также могут быть полезны, чтобы точно узнать, как обнаружить и запустить тесты из вашего собственного кода, если это то, что вы предпочли бы сделать.