【发布时间】:2019-06-07 15:15:52
【问题描述】:
Jupyter Notebook 中的 Python 3.6.7。在 Lubuntu 18.04.2 LTS 中运行, 它本身在 Virtual Box 中运行。
我正在学习使用模块 unittest。 我的理解是每个单独的方法都是一个测试, 这个其他问题或多或少地证实了这一点: Python unittest counting the number of tests
不过,当我运行这段代码时:
import unittest
def square(x):
return x * x
class TestSquareFunction(unittest.TestCase):
def test_positive(self):
a = 2.0
self.assertEqual(square(a), 4.0)
def test_negative(self):
a = -3.0
self.assertEqual(square(a), 9.0)
if __name__ == '__main__':
unittest.main(argv=['first-arg-is-ignored'], exit=False)
我得到了结果:
.....
----------------------------------------------------------------------
Ran 5 tests in 0.006s
OK
当我期待 2 次测试时。
如果我更改方法中的值导致测试失败, 我得到了这个结果:
Ran 5 tests in 0.017s
FAILED (failures=2)
失败的测试是方法test_positive 和test_negative。
但是,其他测试是什么?
稍后添加
在同一个 Notebook 中还有另一个单元格,包含另一个 TestCase 对象,它有自己的 3 个方法。
【问题讨论】:
-
当我测试你的代码时,我得到了 2 个测试..
-
在此处粘贴您的代码:repl.it/languages/python3,看看它是如何完美运行的!
-
基于TestCase基类方法计数的测试计数!看来你的运行环境有问题!如果您想获得帮助,您必须详细说明您的运行环境以及运行方式!和其他文件(如果可用)在您的项目中!
-
打开详细程度以查看它实际运行的测试.. 显然您的示例中只定义了 2 个测试。
-
感谢您的所有 cmets。我发现是问题所在。在同一个笔记本中是另一个单元格,其中包含另一个具有 3 个方法的 TestCase 对象。当我运行包含我在此处发布的代码的单元格时,结果会计算两个 TestCase 对象的方法。如果我重新启动内核并只运行这段代码,我会得到 2 个测试。我将修改问题以反映这一点。