当前位置:
首页 > temp > python入门教程 >
-
Python unittest+ddt+openpyxl
1.技术介绍
框架:unittest
请求处理:requests
excel数据处理:openpyxl
参数化:ddt
报告模板:HTMLTestRunnerNew.py(下载地址:https://pan.baidu.com/s/1w9AZU9AkIpxCYuzTto0EQA?pwd=1234)
testdemo.xlsx:测试数据,注意:implement=y为执行数据,否则不执行
2.代码正题结构
----->DoCase.py 测试用例类 ----->DoExcel.py Excel文件处理类,筛选有效数据返回 ----->DoHttp.py http请求处理类 ----->HttpRunner unittest加载用例执行生成报告 ----->report.html 执行后生成的报告 ----->HTMLTestRunnerNew.py 测试报告模板
3.Docase.py
#测试用例类
import unittest from test02.DoHttp import Request_Http#引入请求类 from ddt import ddt,data,unpack#引入ddt做参数化 from test02.DoExcel import GetExcelData data_list = GetExcelData("C:\\Users\\Administrator\\Desktop\\testdemo.xlsx","s1").get_data() #用例类 @ddt#装饰器装饰类 class HttpCase(unittest.TestCase):#继承unittest测试用例类 @data(*data_list)#脱外套 def test_login_yes(self,item): res = Request_Http(item["method"], item["url"], item["data"]).request_http() try: self.assertEqual(item["expect"],res.json()["code"])#断言:预期与实际是否相等 except Exception as e: print("断言异常:{0}".format(e)) raise e#抛出异常
4.DoExcel.py
#Excel文件处理类 from openpyxl import load_workbook class GetExcelData(): def __init__(self,file,sheet): self.file=file self.sheet=sheet def get_data(self): wb = load_workbook(self.file)#打开excel sheet = wb[self.sheet]#定位工作簿 data_list = [] for n in range(2,sheet.max_row+1): data_dic = {} for m in range(2,sheet.max_column+1): data_dic["case_id"] = sheet.cell(n, 1).value data_dic["module"] = sheet.cell(n, 2).value data_dic["title"] = sheet.cell(n, 3).value data_dic["method"]=sheet.cell(n,4).value data_dic["url"]=sheet.cell(n,5).value data_dic["data"]=eval(sheet.cell(n, 6).value)#还原数据类型 data_dic["expect"]=sheet.cell(n, 7).value data_dic["implement"]=sheet.cell(n, 8).value#y执行 if data_dic["implement"]=="y":#如果implement为y添加到列表 data_list.append(data_dic) return data_list
5.DoHttp.py
#http请求处理类
import requests class Request_Http(): def __init__(self,method,url,data,expected=None,headers=None,cookie=None): self.method=method.lower()#请求方式转小写 self.url=url self.data=data self.excepted=expected self.headers=headers self.cookie=cookie def request_http(self): if self.method=="get": try: return requests.get(self.url, params=self.data, headers=self.headers, cookies=self.cookie) except Exception as e: print("异常请求:{0}".format(e)) raise e # 抛出异常 else: try: return requests.post(self.url,params=self.data,headers=self.headers,cookies=self.cookie) except Exception as e: print("异常请求:{0}".format(e)) raise e#抛出异常
6.HttpRunner.py
#unittest加载用例执行生成报告
import unittest from test02 import DoCase import HTMLTestRunnerNew suite = unittest.TestSuite()#存放测试用例 loader = unittest.TestLoader()#加载器 suite.addTest(loader.loadTestsFromModule(DoCase))#加载测试模块 #上下文管理器 with open("report.html","wb") as file: runner = HTMLTestRunnerNew.HTMLTestRunner(stream=file, verbosity=2,title="标题",description="备注",tester="姓名") runner.run(suite)
7.report.html
8.报告模板下载
HTMLTestRunnerNew.py(下载地址:https://pan.baidu.com/s/1w9AZU9AkIpxCYuzTto0EQA?pwd=1234)
出处:https://www.cnblogs.com/QAbujiaban/p/16995301.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数