Python:如何从unittest模块

时间:2017-12-28 12:49:10

标签: python unit-testing python-unittest

对于我工作的特定程序,我们需要评估一些代码,然后运行 unittest ,然后根据测试是否失败,执行A或B.

但通常的 self.assertEqual(...)似乎会显示结果(失败,错误,成功),而不是将它们保存在某个地方,因此我无法访问该结果。 我已经检查了unittest的模块好几天,但是我无法弄清楚魔法在哪里发生,或者在某个地方有一个变量我可以打电话来知道测试的结果而不必阅读屏幕(制作程序读取并尝试查找单词"错误"或"失败"听起来不是一个好的解决方案。)

2 个答案:

答案 0 :(得分:0)

您可以使用pdb来调试此问题,在测试中只需添加这两行来暂停执行并开始调试。

import pdb pdb.settrace()

现在,对于良好的测试实践,您需要确定性的测试结果,有时测试失败并不是一个好的测试。我建议模拟随机函数并使用捕获您发现的错误的数据集。

答案 1 :(得分:0)

经过几天的研究,我发了一封电子邮件到 help@python.org ,为我的问题找到了完美的解决方案。 我得到的答案是:

  

我怀疑您在进行单元测试时遇到问题   要做到这一点,那不是单元测试的那种东西   写的。一个暗示,在我看来,情况就是这样   在文档中:

     

https://docs.python.org/3/library/unittest.html

     

在命令行界面上有一节,但没什么关系   将模块用作导入模块。

     

Googling的一些产生了这个食谱:

     

http://code.activestate.com/recipes/578866-python-unittest-obtain-the-results-of-all-the-test/

     

这看起来好像对你有用,但我无法保证   它似乎涉及替换库中的一个文件。   (替换其中一个库文件在我的文件中是完全合理的   意见。 Python开源的要点是你可以破解   它适合你自己。)

     

但如果我正在做你正在描述的事情,我可能会写自己的   测试代码。你可以从unittest窃取你认为有用的东西   (改变库的反向的种类)。或者你可以   发现你的需求足够简单,只需要一个简单的文件   测试代码就足够了。

     

如果没有一个指向解决方案,请告诉我们你得到了什么   我会尝试多考虑一下。

     

问候,马特

从unittest更改 result.py 模块后,我可以访问测试的值(True,False或Error)。

非常感谢,马特。

P.S。我编辑了我的问题,因此它更清晰,没有不必要的代码。