有没有办法获得python';s nose模块在__________________________________?

有没有办法获得python';s nose模块在__________________________________?,python,nose,nosetests,Python,Nose,Nosetests,我不知道如何让nose模块的\uuuuu主\uuuu处理程序工作。我在测试模块的末尾有以下内容: if __name__ == "__main__": import nose nose.main() 这给了我: ---------------------------------------------------------------------- Ran 0 tests in 0.002s OK 但如果我通过命令行运行相同的东西,它会找到测试并执行它们: MacBook

我不知道如何让nose模块的
\uuuuu主\uuuu
处理程序工作。我在测试模块的末尾有以下内容:

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)
----------------------------------------------------------------------
剪断

我一直在尝试向nose.main()传递不同的参数,但我找不到任何有效的方法。我是不是错过了一些很明显的东西


谢谢

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

我建议检查两件事:

if __name__ == '__main__':
    import nose
    nose.run(defaultTest=__name__)
确保您的源文件遵循适当的命名约定:(详见本节)

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

我试过:

nose.run(defaultTest=__name__)
正如前面的回答所暗示的,但出于某种原因,它对我不起作用。我必须做这两件事才能让它工作

希望能有帮助

编辑: 顺便说一下,我打电话给你

 nose.run() 


也没有明显的区别。

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

如果uuuu name_uuuu=='\uuuuuuu main\uuuuuu':
进口鼻
run(argv=[\uuuuu文件\uuuuuu'--with doctest','-vv'])
--with doctests
也将在同一文件中执行您的doctests。

方法如下:

if __name__ == '__main__':
    import nose
    nose.runmodule() 

奇怪的是,我不能从Aquamacs上运行这个。Aquamacs不会为写入缓冲区的临时文件设置文件变量。为nose提供文件名是明智的。我遇到了奇怪的错误,好像它试图将它所在的函数解释为一个模块名。这在功能上似乎等同于
nose.runmodule(argv=['nose','--with doctest','-vv'])
 nose.run() 
 nose.main()
if __name__ == '__main__':
    import nose
    nose.runmodule()