在此代码示例中,unittest进行哪些测试?

时间:2019-06-07 15:15:52

标签: python python-unittest

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_positivetest_negative。 但是,还有哪些其他测试?

稍后添加

在同一笔记本中,还有另一个单元格,其中包含另一个具有自己的3种方法的TestCase对象。

1 个答案:

答案 0 :(得分:1)

正如AbdolHosein所说,问题出在运行环境中。

同一笔记本包含两个具有不同方法的不同TestCase对象。当运行其中一个测试时,它会计算先前已经运行过的所有方法,即使它们包含在另一个对象中。

由于一个对象有3种方法,另一个对象有2种方法,所以最终结果是已经运行了5个测试。