分为表达用例,收集用例,执行用例,生成报告四部分
1.表达用例
负责实现功能的函数,一般放在一个单独的py文件中
2.收集用例(一个测试类)
(1)定义一个测试类,继承unittest.TestCase
(2)以test_开头,定义测试函数
(3)每一个test_函数就是一个测试用例
(4)内部用assertxxx进行断言
例如:assertEqual(a,b),assertIn(a,b), assertTrue(a)
(5)需要导入unittest包
(6)setUp:类下面的每一个用例在执行之前先执行setUp
tearDown:类下面的每一个用例在执行之后再执行tearDown
例:
class TestRegister(unittest.TestCase):
def setUp(self):
print("每一个用例在执行之前我最先执行")
def tearDown(self):
print("每一个用例在执行之后我再执行")
setUpClass:类下面的第一个用例在执行之前先执行setUpClass
tearDownClass:类下面的最后一个用例在执行之后先执行tearDownClass
@classmethod
def setUpClass(cls) -> None:
print("类下的用例开始执行")
@classmethod
def tearDownClass(cls) -> None:
print("类下的用例执行结束")
整体用法如下:
import unittest
from register import register #register是一个实现注册功能的py文件
class TestRegister(unittest.TestCase):
def test_register(self, data):
res = register(“jane”, “123456”, “123456”)
self.assertEqual(res, {"code": 1, "msg": "注册成功"})
注:通常会使用ddt 对测试流程进行重复使用,只改变测试数据不改变测试流程
ddt的使用:
(1)需要先pip导入 pip install ddt
(2)引入ddt模块 import ddt
(3)在类名上面加 @ddt.ddt
(4)在测试函数上面加 @ddt.data(*datas)
代码应用如下:
import unittest
from register import register
import ddt
datas = [{"user": "python333", "pwd": "1111111", "pwd2": "1111111"},
{"user": "python444", "pwd": "11111", "pwd2": "222222"},
{"user": "python555", "pwd": "", "pwd2": ""},
{"user": "python26", "pwd": "1111111", "pwd2": "1111111"},
{"user": "python000", "pwd": "00000000000000000000", "pwd2": "00000000000000000000"},
{"user": "python566", "pwd": "111", "pwd2": "111"}
]
@ddt.ddt
class TestRegister(unittest.TestCase):
@ddt.data(*datas)
def test_register(self, data):
res = register(data["user"], data["pwd"], data["pwd2"])
self.assertEqual(res, {"code": 1, "msg": "注册成功"})
3.执行用例
(1)用例套件:TestSuite(了解,一般不常用)
addTest(类名(“用例名”))#添加一个测试用例
addTests([类名(“用例名”), 类名(“用例名”)])#添加一个测试用例的列表
(2)用例收集:TestLoader
unittest.TestLoader().discover(搜索目录) #默认在test*.py中搜索用例
用法:
s = unittest.TestLoader().discover(r"D:\pycharm_code\first")
4.生成测试报告
分为两种,一种为text报告,一种为html报告,一般用的都是HTML报告
(1)TextTestRunner
with open("test_result.text", "w",) as file:
runner = unittest.TextTestRunner(file)
runner.run(s)
(2)HTML报告
第一种HTMLTestRunner
from HTMLTestRunner import HTMLTestRunner
s = unittest.TestLoader().discover(r"D:\pycharm_code\first")
f = open("report.html", "wb")
test_run = HTMLTestRunner(stream=f, title="测试报告")
test_run.run(s)
第二种BeautifulReport
需要先pip安装 :pip install BeautifulReport
import unittest
from BeautifulReport import BeautifulReport
s = unittest.TestLoader().discover(r"D:\pycharm_code\first")
br = BeautifulReport(s)
br.report("注册测试报告", "register.html")
3,4执行用例和生成测试报告是都写在一个main.py文件中实现的