Я не уверен, как заставить работать обработчик __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)

Я играл с передачей различных аргументов в nose.main (), но я не могу найти ничего, что работает. Я что-то упускаю действительно очевидное?

Благодарность

11
PerilousApricot 1 Июл 2010 в 22:21

5 ответов

Лучший ответ

Ради потомков, вот что я использую:

if __name__ == '__main__':
    import nose
    nose.run(argv=[__file__, '--with-doctest', '-vv'])

--with-doctests также выполнит ваши тесты в том же файле.

9
Daniel Werner 23 Авг 2012 в 15:14

Я рекомендую проверить 2 вещи:

Убедитесь, что ваш источник ФАЙЛЫ соблюдает соответствующее соглашение об именах: (подробности в этом ответ ) .

Мне, например, пришлось добавить «_Test» ко всем моим исходным файлам. Затем все, что вам нужно, это аргумент (при условии, что ваш main находится в корне тестов):

nose.main(defaultTest="")

Я пробовал:

nose.run(defaultTest=__name__)

Как предполагал предыдущий ответ, но по какой-то причине он не работал для меня. Я должен был сделать ОБА вещи, чтобы заставить это работать!

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: Кстати, звонить с

 nose.run() 

Или

 nose.main()

Не сделал никакой заметной разницы либо.

1
Community 23 Май 2017 в 12:34

Вам нужно использовать nose.core.TestProgram напрямую, передавая им ложные аргументы командной строки. Но я не уверен, что найдет ваши тесты из того же модуля, что и вы.

0
alecxe 30 Ноя 2013 в 21:28

nose.runmodule:

if __name__ == '__main__':
    import nose
    nose.runmodule() 
6
Vincent 20 Мар 2015 в 13:37
if __name__ == '__main__':
    import nose
    nose.run(defaultTest=__name__)
8
snapshoe 5 Ноя 2010 в 06:20