单元测试能够帮助咱们准确迅速地定位出现问题的模块和单元。css
单元测试的对象是函数,必须有输出结果(哪怕是异常输出),以便单元测试模块可以捕获返回值,而且与预期值进行比较,从而得出测试经过与否函数
单元测试的加载能够经过unittest.main()来启动单元测试的测试模块。单元测试
而testsuit里存放的就是单元测试的用例,下面分别列出了2种方法的使用。测试
注:引入模块 import unittest ui
def sum(x, y): return x + y def sub(x, y): return x - y
单元测试模块spa
class mytest(unittest.TestCase): #全部执行测试的类都继承TestCase类 #初始化工做 def setUp(self): pass #清退工做 def tearDown(self): pass #具体的测试用例,必定要以test开头 def testsum_1(self): self.assertEqual(sum(1, 2), 3, "test sum fail") def testsum_2(self): self.assertEqual(sum(1, 2), 2, "test sum fail") def testsub(self): self.assertEqual(sub(2, 1), 1, "test sub fail") if __name__ == "__main__": unittest.main()
测试结果code
..F ====================================================================== FAIL: testsum_2 (__main__.mytest) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:/task/��Ԫ����/test1.py", line 18, in testsum_2 self.assertEqual(sum(1, 2), 2, "test sum fail") AssertionError: test sum fail ---------------------------------------------------------------------- Ran 3 tests in 0.003s FAILED (failures=1)
注:F表示fail, F前的点表示测试经过,有E的话表示程序自身异常对象
class myclass: def __init__(self): pass def sum(self, x, y): return x + y def sub(self, x, y): return x - y
测试代码blog
class mytest(unittest.TestCase): def setUp(self): self.tclass = myclass() def tearDown(self): pass def testsum_1(self): self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail") def testsum_2(self): self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail") def testsub(self): self.assertEqual(self.tclass.sub(2, 1), 1, "test sub fail") if __name__ == "__main__": unittest.main()
结果继承
..F ====================================================================== FAIL: testsum_2 (__main__.mytest) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:/task/��Ԫ����/test2.py", line 24, in testsum_2 self.assertEqual(self.tclass.sum(1, 2), 5, "test sum fail") AssertionError: test sum fail ---------------------------------------------------------------------- Ran 3 tests in 0.001s FAILED (failures=1)
被测代码
class myclass: def __init__(self): pass def sum(self, x, y): return x + y def sub(self, x, y): return x - y
测试代码
class mytest(unittest.TestCase): def setUp(self): self.tclass = myclass() def tearDown(self): pass def testsum_1(self): self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail") def testsum_2(self): self.assertEqual(self.tclass.sum(1, 2), 5, "test sum fail") def testsub(self): self.assertEqual(self.tclass.sub(2, 1), 1, "test sub fail") def suite(): suite = unittest.TestSuite() suite.addTest(mytest("testsum_1")) suite.addTest(mytest("testsum_2")) suite.addTest(mytest("testsub")) return suite if __name__ == "__main__": unittest.main(defaultTest = "suite")