python中的unittest框架应用详解
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,本篇内容主要讲解"python中的unittest框架应用详解",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python中的unittest框架应用详解"
千家信息网最后更新 2025年02月02日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安全错误
数据库的锁怎样保障安全
http文件服务器 速度
计算机 三级 数据库
湛江市芝麻互联网科技公司
国际维护网络安全的措施
学习数据库感受
obs服务器
甘肃省消防 软件开发
sql 查询数据库列
安卓系统软件开发教程
毛海晴数据库
互联网科技观点大全
服务器管理员常逛贴吧
腾讯服务器管理员
不安全视角下网络安全
幻塔pvp是服务器互通的吗
数据库技术中的关键技术
电商网络安全宣传标语
微信个人网络安全
闵行区会议视频系统服务器
mum计算机软件开发招聘
gta5连接不到游戏服务器
可靠网络安全运维怎么选择
开源信息网络技术有限公司
邢台市软件开发公司有哪些
华硕路由器首选dns服务器
我的世界先行服服务器
先锋数据库
中国数据库易鲸捷
丽水榔丫网络技术有限公司
网络安全大赛完成截图