什么是unittest?
单元测试框架
好处1:提供断言失败的提示
好处2:跳过执行失败的用例继续测试
好处3:统计测试结果
......
主要成员有哪些?
Testcase: 检查特定输入的特定返回值
TestSuite : 组装一组需要运行的测试用例
TestRunner: 协调测试执行并向用户提供测试结果
Test Fixture: 执行测试所需的环境准备
举例
测试对象 cal.py
# 计算器类
class Calculator:
""" 用于完成两个数的加、减、乘、除 """
def __init__(self, a, b):
self.a = int(a)
self.b = int(b)
# 加法
def add(self):
return self.a + self.b
# 减法
def sub(self):
return self.a - self.b
# 乘法
def mul(self):
return self.a * self.b
# 除法
def div(self):
return self.a / self.b
测试代码 test_cal.py
mport unittest
from cal import Calculator
class TestCal(unittest.TestCase):
# 测试用例前置动作
def setUp(self):
print("test start:")
# 测试用例后置动作
def tearDown(self):
print("test end")
def test_add(self):
c = Calculator(3, 5)
result = c.add()
self.assertEqual(result, 8)
def test_sub(self):
c = Calculator(7, 2)
result = c.sub()
self.assertEqual(result, 5)
def test_mul(self):
c = Calculator(3, 3)
result = c.mul()
self.assertEqual(result, 10)
def test_div(self):
c = Calculator(6, 2)
result = c.div()
self.assertEqual(result, 3)
if __name__ == '__main__':
# 创建测试套件
suit = unittest.TestSuite()
suit.addTest(TestCal("test_add"))
suit.addTest(TestCal("test_div"))
# 创建测试运行器
runner = unittest.TextTestRunner()
runner.run(suit)
温馨提示
一个被测试功能应该会对应好几个测试用列
所以,建议一个测试类对应一个被测试功能