11

我不确定如何让鼻子模块的__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(),但我找不到任何有效的方法。我错过了一些非常明显的东西吗?

谢谢

4

5 回答 5

9

为了子孙后代,这就是我使用的:

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

--with-doctests还将在同一个文件中执行您的文档测试。

于 2012-08-23T15:14:00.780 回答
8
if __name__ == '__main__':
    import nose
    nose.run(defaultTest=__name__)
于 2010-11-05T05:44:33.613 回答
7

nose.runmodule是要走的路:

if __name__ == '__main__':
    import nose
    nose.runmodule() 
于 2015-03-20T13:37:00.187 回答
1

我建议检查两件事:

确保您的源文件遵循适当的命名约定:(详见此答案)。

例如,我必须将“_Test”附加到我的所有源文件中。然后,您只需要这个参数(假设您的 main 位于测试的根目录):

nose.main(defaultTest="")

我试过:

nose.run(defaultTest=__name__)

正如先前的答案所建议的那样,但由于某种原因,它对我不起作用。我必须做这两件事才能让它工作!

希望能帮助到你。

编辑:顺便说一句,打电话给

 nose.run() 

或者

 nose.main()

也没有明显的区别。

于 2011-11-21T14:23:29.667 回答
0

您需要nose.core.TestProgram通过传递虚假的命令行参数来直接使用。我不确定是否会从与您使用的模块相同的模块中找到您的测试

于 2010-08-18T13:57:31.877 回答