我不确定如何让nose模块的__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)
----------------------------------------------------------------------
SNIP
----------------------------------------------------------------------
Ran 15 tests in 0.082s
FAILED (errors=1)
我一直在玩将不同的参数传递给nose.main(),但我找不到任何有用的东西。我错过了一些非常明显的东西吗?
由于
答案 0 :(得分:9)
为了后人的缘故,这就是我使用的:
if __name__ == '__main__':
import nose
nose.run(argv=[__file__, '--with-doctest', '-vv'])
--with-doctests
也会在同一个文件中执行您的doctests。
答案 1 :(得分:7)
if __name__ == '__main__':
import nose
nose.run(defaultTest=__name__)
答案 2 :(得分:6)
nose.runmodule是要走的路:
if __name__ == '__main__':
import nose
nose.runmodule()
答案 3 :(得分:1)
我建议检查两件事:
确保您的来源 FILES 遵循相应的命名惯例:(详见answer)。
例如,我必须将“_Test”附加到我的所有源文件中。 然后,您只需要这个参数(假设您的主要位于测试的根部):nose.main(defaultTest="")
我尝试过:
nose.run(defaultTest=__name__)
作为先前的回答建议,但由于某种原因它不适合我。我不得不做两件事才能让它发挥作用!
希望它有所帮助。
编辑: 顺便说一下,用
打电话 nose.run()
或
nose.main()
也没有明显的区别。
答案 4 :(得分:0)
您需要通过传递伪命令行参数直接使用nose.core.TestProgram
。我不确定如果从你正在使用的模块中找到你的测试