有没有办法让Python的nose模块在__main__和命令行中表现相同?

11 投票
5 回答
3759 浏览
提问于 2025-04-16 00:41

我不太确定怎么让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()传递不同的参数,但找不到任何有效的。难道我漏掉了什么很明显的东西吗?

谢谢

5 个回答

7

nose.runmodule 是一个很好的选择:

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

在编程中,有时候我们需要处理一些数据,比如从一个地方获取信息,然后把这些信息放到另一个地方。这个过程就像是把水从一个杯子倒到另一个杯子一样。

有些时候,我们会遇到一些问题,比如数据格式不对,或者数据不完整。这就像是你想把水倒进一个有洞的杯子,水会漏出来,最后你可能什么都得不到。

为了避免这些问题,我们可以使用一些工具或者方法来检查数据,确保它们是正确的。就像在倒水之前,先检查一下杯子有没有破损。

总之,处理数据的时候要小心,确保每一步都做对,这样才能得到想要的结果。

if __name__ == '__main__':
    import nose
    nose.run(defaultTest=__name__)
9

为了将来参考,这就是我使用的内容:

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

这里的 --with-doctests 选项会在同一个文件中运行你的文档测试。

撰写回答