Ответ 1
Для потомков это то, что я использую:
if __name__ == '__main__':
import nose
nose.run(argv=[__file__, '--with-doctest', '-vv'])
--with-doctests
также выполнит ваши досье в том же файле.
Я не уверен, как заставить обработчик нотного модуля __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(), но я не могу найти ничего, что сработает. Я пропустил что-то действительно очевидное?
Спасибо
Для потомков это то, что я использую:
if __name__ == '__main__':
import nose
nose.run(argv=[__file__, '--with-doctest', '-vv'])
--with-doctests
также выполнит ваши досье в том же файле.
if __name__ == '__main__':
import nose
nose.run(defaultTest=__name__)
nose.runmodule - это путь:
if __name__ == '__main__':
import nose
nose.runmodule()
Я рекомендую проверить 2 вещи:
Убедитесь, что ваш источник ФАЙЛЫ соответствует соответствующему соглашению об именах: (подробнее в этом ).
Я, например, должен был добавить "_Test" ко всем моим исходным файлам. Тогда все, что вам нужно, это аргумент (предполагая, что ваш основной находится в корне тестов):
nose.main(defaultTest="")
Я пробовал:
nose.run(defaultTest=__name__)
как предложил предыдущий ответ, но по какой-то причине он не работал у меня. Я должен был сделать ВСЕ, чтобы заставить его работать!
Надеюсь, что это поможет.
EDIT: Кстати, вызов с помощью
nose.run()
или
nose.main()
не было различимых различий.
Вам нужно использовать nose.core.TestProgram
напрямую, передав его поддельные аргументы командной строки. Это я не уверен, хотя будет, если вы найдете свои тесты из того же модуля, что и вы используете