python中的unittest框架应用详解
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,本篇内容主要讲解"python中的unittest框架应用详解",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python中的unittest框架应用详解"
千家信息网最后更新 2024年11月14日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安全错误
数据库的锁怎样保障安全
db2命令查看数据库用户密码
企业网络安全培训哪家好
软件开发外包工资
上亿用户数据库设计
光遇如何不用等服务器进去
快递查询软件开发
服务器存档错误
电子商务加强网络安全控制
运城市千网互联网络科技
如何理解数据库是个容器
天津数据库培训条件
图书管理系统数据库运行维护
大众网络安全法
瑞丽gpu云服务器公司
数据库原型设计
茅箭区信息软件开发有哪些
数据库最好的学习书籍
集中式分布式存储数据库
数据库交换
鸿瑞网络安全隔离装置
免费存储json数据库
宁夏网络安全专业招聘信息
教育系统网络安全重大风险
医院网络安全二级等保要求
嗯计算机网络技术
服务器如何登陆管理口
苹果手机本地备份泄露数据库
异星探险家连接服务器失败
广东运营网络安全工程包括什么
.mdf数据库