2015-01-21 3 views
0

У меня есть такая структураUnitTests не участвуете с UnitTest командой питона -m

app/ 
    __init__.py 
    phonebook.py 
    test_phonebook.py 

app Находясь в каталоге, я могу запускать тесты в терминале с python test_phonebook.py

Но почему тесты не работать, когда я вхожу python -m unittest быть в каталоге: app? я вижу сообщение, что 0 тестов запустить

ответ

0

Если вы хотите запустить несколько test_*.py файлов вручную, вы должны создать unittest.TestLoader для выбора тестов и запустить, что с unittest.TestRunner.

Например, вы можете добавить __main__.py к вашему приложению

import unittest 
import os 
def run(verbosity=2): 
    suite = unittest.TestLoader().discover(os.path.dirname(__file__)) 
    unittest.TextTestRunner(verbosity=verbosity).run(suite) 
run() 

и запустить его с

$>python -m app 

Так будет обнаружить все тесты внутри app и запустить их.

+0

выглядит как взломать, если есть более чистое решение? – micgeronimo

+0

Его способ 'unittest' предназначен для использования в соответствии с документами unittest. И я не знаю о «чистом», но его питоническом пути, потому что «Явный лучше, чем неявный» – denz

Смежные вопросы