Python unittest+ddt+openpyxl接口自动化

打印 上一主题 下一主题

主题 550|帖子 550|积分 1650

1.技术介绍

框架:unittest
请求处理:requests
excel数据处理:openpyxl
参数化:ddt
报告模板:HTMLTestRunnerNew.py(下载地址:https://pan.baidu.com/s/1w9AZU9AkIpxCYuzTto0EQA?pwd=1234)
testdemo.xlsx:测试数据,注意:implement=y为执行数据,否则不执行
2.代码正题结构
  1. ----->DoCase.py  测试用例类
  2. ----->DoExcel.py  Excel文件处理类,筛选有效数据返回
  3. ----->DoHttp.py    http请求处理类
  4. ----->HttpRunner  unittest加载用例执行生成报告
  5. ----->report.html   执行后生成的报告
  6. ----->HTMLTestRunnerNew.py  测试报告模板
复制代码
 


3.Docase.py
  1. #测试用例类
复制代码
  1. import unittest
  2. from test02.DoHttp import Request_Http#引入请求类
  3. from ddt import ddt,data,unpack#引入ddt做参数化
  4. from test02.DoExcel import GetExcelData
  5. data_list = GetExcelData("C:\\Users\\Administrator\\Desktop\\testdemo.xlsx","s1").get_data()
  6. #用例类
  7. @ddt#装饰器装饰类
  8. class HttpCase(unittest.TestCase):#继承unittest测试用例类
  9.     @data(*data_list)#脱外套
  10.     def test_login_yes(self,item):
  11.         res = Request_Http(item["method"], item["url"], item["data"]).request_http()
  12.         try:
  13.             self.assertEqual(item["expect"],res.json()["code"])#断言:预期与实际是否相等
  14.         except Exception as e:
  15.             print("断言异常:{0}".format(e))
  16.             raise e#抛出异常
复制代码
4.DoExcel.py
  1. #Excel文件处理类
  2. from openpyxl import load_workbook
  3. class GetExcelData():
  4.     def __init__(self,file,sheet):
  5.         self.file=file
  6.         self.sheet=sheet
  7.     def get_data(self):
  8.         wb = load_workbook(self.file)#打开excel
  9.         sheet = wb[self.sheet]#定位工作簿
  10.         data_list = []
  11.         for n in range(2,sheet.max_row+1):
  12.             data_dic = {}
  13.             for m in range(2,sheet.max_column+1):
  14.                 data_dic["case_id"] = sheet.cell(n, 1).value
  15.                 data_dic["module"] = sheet.cell(n, 2).value
  16.                 data_dic["title"] = sheet.cell(n, 3).value
  17.                 data_dic["method"]=sheet.cell(n,4).value
  18.                 data_dic["url"]=sheet.cell(n,5).value
  19.                 data_dic["data"]=eval(sheet.cell(n, 6).value)#还原数据类型
  20.                 data_dic["expect"]=sheet.cell(n, 7).value
  21.                 data_dic["implement"]=sheet.cell(n, 8).value#y执行
  22.             if data_dic["implement"]=="y":#如果implement为y添加到列表
  23.                 data_list.append(data_dic)
  24.         return data_list<br>
复制代码
5.DoHttp.py
  1. #http请求处理类
复制代码
  1. import requests
  2. class Request_Http():
  3.     def __init__(self,method,url,data,expected=None,headers=None,cookie=None):
  4.         self.method=method.lower()#请求方式转小写
  5.         self.url=url
  6.         self.data=data
  7.         self.excepted=expected
  8.         self.headers=headers
  9.         self.cookie=cookie
  10.     def request_http(self):
  11.         if self.method=="get":
  12.             try:
  13.                 return requests.get(self.url, params=self.data, headers=self.headers, cookies=self.cookie)
  14.             except Exception as e:
  15.                 print("异常请求:{0}".format(e))
  16.                 raise e  # 抛出异常
  17.         else:
  18.             try:
  19.                 return requests.post(self.url,params=self.data,headers=self.headers,cookies=self.cookie)
  20.             except Exception as e:
  21.                 print("异常请求:{0}".format(e))
  22.                 raise e#抛出异常
复制代码
6.HttpRunner.py
  1. #unittest加载用例执行生成报告
复制代码
  1. import unittest
  2. from test02 import DoCase
  3. import HTMLTestRunnerNew
  4. suite = unittest.TestSuite()#存放测试用例
  5. loader = unittest.TestLoader()#加载器
  6. suite.addTest(loader.loadTestsFromModule(DoCase))#加载测试模块
  7. #上下文管理器
  8. with open("report.html","wb") as file:
  9.     runner = HTMLTestRunnerNew.HTMLTestRunner(stream=file, verbosity=2,title="标题",description="备注",tester="姓名")
  10.     runner.run(suite)
复制代码
7.report.html


8.报告模板下载

HTMLTestRunnerNew.py(下载地址:https://pan.baidu.com/s/1w9AZU9AkIpxCYuzTto0EQA?pwd=1234)
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美食家大橙子

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表