python中的unittest框架应用详解
发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,本篇内容主要讲解"python中的unittest框架应用详解",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python中的unittest框架应用详解"
千家信息网最后更新 2025年11月15日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安全错误
数据库的锁怎样保障安全
终端维护转网络安全工程师
航天研究所软件开发
游戏服务器维护解读
软件开发服务要移交代码吗
数据库映射实体类
万得资讯数据库
数据库界面软件
山西智能化软件开发预算
管理登陆服务器的用户
多线程访问数据库
网络安全专业怎么样
北京大型软件开发质量保障
校园日网络安全活动总结学生
王者荣耀剑仙大号服务器是什么
机架式服务器主板
储存服务器配置方案
山东云空间设计有限公司云服务器
珠海高清视频会议服务器报价
连接atm数据库
华为网络技术大赛初赛试题
服务器 交换机 存储 架构
大师决斗选哪个服务器
网络安全案例病毒
python应用网络安全吗
58网络安全员王鑫
规模大的浪潮服务器销售哪家好
sa组网架构下的网络安全
连接atm数据库
信息数据库软件
挂q服务器