python如何进行单元测试 --------------------------------------------------- 在上一节中我们事先了数字反转函数revert(), 但如果确保它的实现是正确的呢?这就需要单元测试。 在Python中,有一个名为unittest模块实现了一个单元测试框架,它和CUnit,JUnit等测试框架非常类似。 unittest模块提供了一个main()函数,它负责测试程序的启动入口。 它的原型如下:: unittest.main(module='__main__', defaultTest=None, argv=None, testRunner=None, testLoader=unittest.defaultTestLoader, exit=True, verbosity=1, failfast=None, catchbreak=None, buffer=None, warnings=None) 它从模块加载一组测试并运行它们; 这主要是为了让测试模块方便地执行。这个函数最简单的用法是在 测试脚本的末尾包含以下行: :: if __name__ == '__main__': unittest.main() 最常见的是TestCase类,它就代表着unittest中的逻辑测试单元。它作为基类,具体的子类实现特定的测试。 这个类实现了测试运行所需要的接口,以允许它驱动测试,以及测试代码可以用来检查和报告各种故障的方法。 TestCase类提供了三组方法:一组用于运行测试,另一组用于检查条件和报告失败,以及一些允许收集关于测试本身的信息的查询方法。 检查条件和报告失败的方法有: * assertEqual 测试第一个参数和第二个参数是否相等。如果值不相等,则测试将失败。 * assertNotEqual 测试第一个参数和第二个参数是否相等。如果值相等,则测试将失败。 * assertIn 测试第一个参数是否在第二个里面, 如果不在,则测试将失败。 常见的就这几个。 我们采用该框架对revert函数进行测试。代码如下:: class TestRevertFunc(unittest.TestCase): """Test revert""" def test_revert(self): """Test method add(a, b)""" self.assertEqual(321, revert(123)) self.assertEqual(-321, revert(-123)) self.assertEqual(21, revert(120)) self.assertEqual(0, revert(0)) self.assertEqual(1, revert(1)) self.assertEqual(-1, revert(-1)) if __name__ == '__main__': unittest.main() 执行测试就可以看到程序结果,unittest优势是只需编写很少的代码即可对函数接口进行测试,并且某一个测试 失败也能找到具体的测试用例。