2016-06-22 3 views
0

Я создал файлы python и unittests, но я не понимаю, как я могу запустить все тесты за один раз из командной строки.запустить unittests из командной строки

структура файла

- py 
    - __init__.py 
    - file1.py 
    - file2.py 
- tests 
    __init__.py 
    - test_file1.py 
    - test_file2.py 

Пожалуйста, дайте мне знать, то же самое. , когда я пытаюсь запустить тесты с использованием nosetests, он говорит мне

no module name file1 
no module name file2 
+0

обязательно напишите полную ошибку traceback. – ravigadila

ответ

3

Ниже надрез из документации носа (в виде того что вы помечены nose)

носа собирает тесты автоматически из питона исходных файлов , каталоги и пакеты, найденные в его рабочем каталоге (который по умолчанию соответствует текущему рабочему каталогу). Любой исходный файл, каталог или пакет python, который соответствует регулярному выражению testMatch (по умолчанию: (?:\b|_)[Tt]est будет собираться в виде теста (или источника для сбора тестов). Кроме того, все остальные пакеты, найденные в рабочем каталоге, будут проверяться на наличие питон исходные файлы или каталоги, которые соответствуют testMatch. открытие пакета происходит весь путь вниз по дереву, так все будут собраны package.tests и package.sub.tests и package.sub.sub2.tests.

курсив мой .

Вы можете просто запустить все тестовые примеры из корневой директории вашего проекта:

$ cd /path/to/your/project 
$ nosetests 
+0

Я сделал то же самое, но в нем сказано: «нет модуля с именем test1» и «no module named test2» – sam

+0

@sam Попробуйте удалить '__init __. Py' из каталога тестов –

+0

Я не вижу никаких' test1' или 'test2' в вашу структуру каталогов. Вы уверены, что это не ошибка в вашем собственном коде? Измените свой вопрос и обновите его с помощью полной трассировки. – SuperSaiyan

2

Для простого открытия, вы можете использовать встроенные функции командной строки из unittest модуля

$ cd /path/to/your/project/tests 
$ python -m unittest discover 

Или, если ваш каталог tests имеет __init__.py, вы можете сделать

$ cd /path/to/your/project 
$ python -m unittest discover -s ./tests 

Если вы абсолютно должны использовать python 2.6, python docs сказать, что вы можете установить unittest2, что является backport новых функций, добавленных в python 2.7. Вы вызовите его немного по-другому

$ unit2 discover 

Кроме того, если вы еще не зашли слишком далеко вниз по кроличьей норы unittest тестирования, я бы рекомендовал проверить pytest. При написании тестов требуется намного меньше шаблонов, и вы можете просто использовать встроенный assert. Он также поставляется с некоторыми другими замечательными функциями, такими как fixtures и параметризованные функции тестирования, которые также позволяют уменьшить количество кода в ваших unittests.

+0

Я использую python 2.6.6. он говорит, что ни один модуль с именем Discover – sam

+0

'discover' требует Py2.7 + IIRC. @Brendan: OP отмечен 'nosetests' не' pytest' – SuperSaiyan

+1

@SuperSaiyan Да, даже не осознавал, что это новая функция. Это было так давно, что я видел систему до 2.7. В дополнение к ответу «plug» был просто дополнительным бонусом. Несколько лет назад я перешел на «pytest» и считаю своим долгом спасти как можно больше людей от необходимости писать «unittest.TestCase» и «self.assertNotEqual» чудовищ. –