Есть ли способ получить модуль носа Python для работы то же самое в __main__ и в командной строке?
Вопрос
Я не уверен, как получить модуль носа __main__
обработчик для работы. У меня это в конце моего тестового модуля:
if __name__ == "__main__":
import nose
nose.main()
Что дает мне:
----------------------------------------------------------------------
Ran 0 tests in 0.002s
OK
Но это я запускаю то же самое через командную строку, она находит тесты и выполняет их:
MacBook-Pro:Storage_t meloam$nosetests FileManager_t.py
............E..
======================================================================
ERROR: testStageOutMgrWrapperRealCopy (WMCore_t.Storage_t.FileManager_t.TestFileManager)
----------------------------------------------------------------------
Снимать
----------------------------------------------------------------------
Ran 15 tests in 0.082s
FAILED (errors=1)
Я играл с прохождением разных аргументов в носу. Main () Но я не могу найти ничего, что работает. Я упускаю что-то действительно очевидное?
Спасибо
Решение
Для Sakeity's Sake это то, что я использую:
if __name__ == '__main__':
import nose
nose.run(argv=[__file__, '--with-doctest', '-vv'])
То --with-doctests
также выполнит ваши доки в одном файле.
Другие советы
if __name__ == '__main__':
import nose
nose.run(defaultTest=__name__)
Нос.Рунмодуль это путь к работе:
if __name__ == '__main__':
import nose
nose.runmodule()
Я рекомендую проверять 2 вещи:
Убедитесь, что ваш источник Файлы Следуйте соответствующему соглашению о именовании: (подробно описано в этом отвечать).
Я, например, пришлось добавить «_тест» на все мои исходные файлы. Затем все, что вам нужно, это этот аргумент (при условии, что ваша основной находится в корне тестов):
nose.main(defaultTest="")
Я пытался с:
nose.run(defaultTest=__name__)
Как предложил предыдущий ответ, но по какой-то причине это не работало для меня. Я должен был сделать обе вещи, чтобы заставить его работать!
Надеюсь, поможет.
Редактировать: Кстати, призывая к
nose.run()
или
nose.main()
не сделал никаких различий различий.
Вам нужно использовать nose.core.TestProgram
напрямую, передавая его поддельные аргументы командной строки. Что я не уверен, что если найдет ваши тесты из того же модуля, что и вы используете