Jupyter Notebook中的Python 3.6.7。在Lubuntu 18.04.2 LTS中运行, 它本身在Virtual Box中运行。
我正在学习使用模块单元测试。 据我了解,每种方法都是一种测试, 另一个问题或多或少地证实了这一点: 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
。
但是,还有哪些其他测试?
稍后添加
在同一笔记本中,还有另一个单元格,其中包含另一个具有自己的3种方法的TestCase对象。
答案 0 :(得分:1)
正如AbdolHosein所说,问题出在运行环境中。
同一笔记本包含两个具有不同方法的不同TestCase对象。当运行其中一个测试时,它会计算先前已经运行过的所有方法,即使它们包含在另一个对象中。
由于一个对象有3种方法,另一个对象有2种方法,所以最终结果是已经运行了5个测试。