import unittest # 导入标准库中的 unittest
def add(a, b): # 创建一个需要被测试的函数,供下面测试时调用。
return a*b
class My_test(unittest.TestCase): # 创建一个测试类,需要继承 unittest.TestCase。
'''编写测试函数,函数名必须是 test* 开头'''
def setUp(self):
print('开始测试')
def tearDown(self):
print('结束测试')
def test_one(self): # 这里写一个简单测试,用 assert 进行断言,判断 1+1 是不是等于 2,
assert 1+1 == 2, '测试1' # 如果不等于2,那么抛出 “AssertionError: 测试1”。
def test_add(self): # 这个函数用来测试 上面定义的 add(a, b) 函数。
i = 1
for a, b, c in [(1, 1, 1), (2, 2, 4), (3, 3, 6), (4, 4, 8)]:
print(i) # 打印出来看看 for 循环了多少次。
with self.subTest(c): # subTest的作用是:当循环中测试出错时,使其接着继续下面的测试,而不会终断。
# subTest的参数是出错时返回的一个标记,可以为任何值。这里取 元组中的 c 。
res = add(a, b)
self.assertEqual(res, c) # 用 unittest自带的判断方法,判断两个参数是否相等。
i += 1
if __name__ == '__main__':
unittest.main() # 单元测试入口
setUp() 方法会在每个测试方法执行之前执行,tearDown() 方法是在每个测试方法执行
之后执行。它们通常用来分配和回收测试需要的外部资源,比如数据库连接或者一些测
试数据。在上面代码中,setUp()和tearDown()方法在 test_one 和 test_add测试中都各自会被调用一次。
一些unittest自带的断言方法如下:
更详细的用法见官方文档:unittest官方文档