python中的unittest框架应用详解
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"python中的unittest框架应用详解",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python中的unittest框架应用详解"
千家信息网最后更新 2026年11月03日python中的unittest框架应用详解2、编写规范
本篇内容主要讲解"python中的unittest框架应用详解",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python中的unittest框架应用详解"吧!
1、Unittest为Python内嵌的测试框架,不需要特殊配置
2、编写规范
需要导入 import unittest
测试类必须继承unittest.TestCase
测试方法以 test_开头
模块和类名没有要求
TestCase 理解为写测试用例
TestSuite 理解为测试用例的集合
TestLoader 理解为的测试用例加载
TestRunner 执行测试用例,并输出报告
import unittestfrom class_api_login_topup.demo import http_requestfrom class_api_login_topup.http_attr import Get_Attr # 反射的值 获取 cookies# 这是文件http_attr中的Get_Attr类class Get_Attr: cookies = Noneclass Login_Http(unittest.TestCase): def __init__(self, methodName, url, data, method, expected): super(Login_Http, self).__init__(methodName) # 超继承 self.url = url self.data = data self.expected = expected self.method = method def test_api(self): # 正常登录 res = http_request().request(self.url, self.data, self.method, getattr(Get_Attr, 'cookies')) if res.cookies: setattr(Get_Attr, 'cookies', res.cookies) try: self.assertEqual(self.expected, res.json()['code']) except AssertionError as e: print("test_api's, error is {0}", format(e)) raise e print(res.json())if __name__ == '__main__': unittest.main()执行一:
import unittestfrom class_demo_login_topup.http_tools import Login_Httpsuite = unittest.TestSuite()loader = unittest.TestLoader()test_data = [{'url': 'http://test.lemonban.com/futureloan/mvc/api/member/login', 'data': {'mobilephone': 'xxxx', 'pwd': '123456'}, 'expected': '10001', 'method': 'get'}, {'url': 'http://test.lemonban.com/futureloan/mvc/api/member/login', 'data': {'mobilephone': 'xxxx', 'pwd': '12345678'}, 'expected': '20111', 'method': 'get'}, {'url': 'http://test.lemonban.com/futureloan/mvc/api/member/recharge', 'data': {'mobilephone': 'xxxx', 'amount': '1000'}, 'expected': '10001', 'method': 'post'}, {'url': 'http://test.lemonban.com/futureloan/mvc/api/member/recharge', 'data': {'mobilephone': 'xxxx', 'amount': '-100'}, 'expected': '20117', 'method': 'post'}]# 遍历数据,执行脚本 addTest 单个执行for item in test_data: suite.addTest(Login_Http('test_api', item['url'], item['data'], item['method'], item['expected']))# 执行with open('http_TestCase.txt', 'w+', encoding='UTF-8') as file: runner = unittest.TextTestRunner(stream=file, verbosity=2) runner.run(suite)# 运行结果{'status': 1, 'code': '10001', 'data': None, 'msg': '登录成功'}{'status': 0, 'code': '20111', 'data': None, 'msg': '用户名或密码错误'}{'status': 1, 'code': '10001', 'data': {'id': 10011655, 'regname': '小蜜蜂', 'pwd': 'E10ADC3949BA59ABBE56E057F20F883E', 'mobilephone': 'xxxx', 'leaveamount': '150000.00', 'type': '1', 'regtime': '2021-07-14 14:54:08.0'}, 'msg': '充值成功'}{'status': 0, 'code': '20117', 'data': None, 'msg': '请输入范围在0到50万之间的正数金额'}执行二:把test_data的数据放在EXCEL中运行。
import unittestfrom class_demo_login_topup.http_tools import Login_Httpsuite = unittest.TestSuite()loader = unittest.TestLoader()test_data = HttpExcel('test_api.xlsx', 'python').real_excel()for item in test_data: suite.addTest(Login_Http('test_api', item['url'], eval(item['data']), item['method'], str(item['expected'])))with open('http_TestCase.txt', 'w+', encoding='UTF-8') as file: runner = unittest.TextTestRunner(stream=file, verbosity=2) runner.run(suite)执行三、直接用装饰器ddt
import unittestfrom class_api_login_topup.demo import http_requestfrom class_api_login_topup.http_attr import Get_Attr # 反射的值from ddt import ddt, data, unpackfrom class_demo_login_topup.http_excel import HttpExceltest_data = HttpExcel('test_api.xlsx', 'python').real_excel()@ddtclass Login_Http(unittest.TestCase): @data(*test_data) def test_api(self, item): # 正常登录 res = http_request().request(item['url'], eval(item['data']), item['method'], getattr(Get_Attr, 'cookies')) if res.cookies: setattr(Get_Attr, 'cookies', res.cookies) try: self.assertEqual(str(item['expected']), res.json()['code']) except AssertionError as e: print("test_api's, error is {0}", format(e)) raise e print(res.json())执行ddt方式一
import unittestfrom class_demo_login_topup.http_tools import Login_Httpfrom class_demo_login_topup.http_excel import HttpExcelsuite = unittest.TestSuite()loader = unittest.TestLoader()from class_demo_login_topup import http_tools_1suite.addTest(loader.loadTestsFromModule(http_tools_1)) # 执行整个文件with open('http_TestCase.txt', 'w+', encoding='UTF-8') as file: runner = unittest.TextTestRunner(stream=file, verbosity=2) runner.run(suite)执行ddt方式二
import unittestfrom class_demo_login_topup.http_tools import Login_Http # 不用ddt的方法from class_demo_login_topup.http_excel import HttpExcelsuite = unittest.TestSuite()loader = unittest.TestLoader()from class_demo_login_topup.http_tools_1 import * # http_tools_1文件是用ddt的方法suite.addTest(loader.loadTestsFromTestCase(Login_Http)) # 执行http_tools_1 文件下的Login_Http类,按照类执行with open('http_TestCase.txt', 'w+', encoding='UTF-8') as file: runner = unittest.TextTestRunner(stream=file, verbosity=2) runner.run(suite)到此,相信大家对"python中的unittest框架应用详解"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
测试
框架
文件
方法
应用
登录
成功
内容
数据
方式
反射
学习
运行
实用
更深
特殊
不用
之间
兴趣
单个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司华为
科技股互联网
麻工互联网科技
互联网金融 科技
贷财互联网科技
远拓互联网科技
北京禾田雨橡互联网科技
伴你行互联网科技有限公司
科技互联网创业计划书
科技与互联网哪个更好
知域互联网科技有限公司大骗子
互联网科技商业
互联网科技产业特征
晋城互联网科技
上海钢联属于互联网科技股吗
互联网安防科技感
济南小医互联网科技有限公司招聘
互联网公司属于科技吗
互联网领先科技活动
西安左小互联网科技有限公司
互联网科技公司
互联网金融科技
互联网金融 科技金融
赫美联合互联网科技
隆华科技工业互联网
互联网科技人工智能实验室
允成互联网科技有限公司融资
2021互联网科技公司排名
富国互联网金融科技混合基金
互联网科技融合创新