mohanzb 2019-12-08
unittest是python自带的单元测试框架
1)test fixture
用于初始化和清理测试数据及环境
2)test case
测试用例,是测试的最小单元,一般用来检查一组输入的相应是否符合预期,
3)test suite
测试套件,是测试用例或测试套件的组合,一般用来把需要一起执行的测试用例组合到一起
4)test runner
用于运行测试用例并返回结果
(1)提供用例组织代码与执行
当有大量测试用例时,要考虑其扩展性与维护性,考虑用例的规范与组织,使测试更加规范和简单
(2)提供丰富的比较方法
(3)提供丰富的日志
来看一个例子
cal.py
class Calculator: def __init__(self, a, b): self.a = a self.b = b def add(self): return self.a + self.b def sub(self): return self.a - self.b
test.py
import unittest from cal import Calculator class TestCal(unittest.TestCase): def setUp(self): print(‘Test begin...‘) self.cal = Calculator(2, 3) def tearDown(self): print(‘Test end...‘) def test_add(self): res = self.cal.add() self.assertEqual(res, 5) def test_sub(self): res = self.cal.sub() self.assertEqual(res, -1) if __name__ == ‘__main__‘: #构造测试集 suite = unittest.TestSuite() suite.addTest(TestCal(‘test_add‘)) suite.addTest(TestCal(‘test_sub‘)) runner = unittest.TextTestRunner() runner.run(suite)
说明:setUp方法在一个测试用例执行前执行,一般用来初始化变量,生成测试数据,打开浏览器等操作
tearDown方法在一个测试用例执行完成后执行,一般用来清除测试数据,关闭文件,关闭浏览器等操作
unittest要求测试方法必须以‘test‘开头,如test_add, test_sub
unittest.TestSuite()中的addTest()方法向测试套件中添加测试用例
unittest.TextTestRunner()类中的run方法用来运行测试套件中的测试用例。
如果想默认运行当前测试文件下的所有测试用例,直接可以用unittest.main()方法,main方法查找测试用例有两个规则:
(1)测试类必须继承unittest.TestCase
(2)测试用例的方法必须以‘test’开头,如test_add