Есть ли способ получить модуль носа Python для работы то же самое в __main__ и в командной строке?

StackOverflow https://stackoverflow.com/questions/3160551

  •  01-10-2019
  •  | 
  •  

Вопрос

Я не уверен, как получить модуль носа __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 напрямую, передавая его поддельные аргументы командной строки. Что я не уверен, что если найдет ваши тесты из того же модуля, что и вы используете

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top