Python unittest+ddt+openpyxl

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  测试报告模板

 

Python unittest+ddt+openpyxl

Python unittest+ddt+openpyxl

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

Python unittest+ddt+openpyxl

8.报告模板下载

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

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python unittest+ddt+openpyxl - Python技术站

(0)
上一篇 2023年4月2日 下午4:11
下一篇 2023年4月2日 下午4:11

相关文章

  • Python怎么引入不同的库?

    怎么引入不同的库? 1.在线安装库 1.1.pip install 模块名 1.2.国内源: 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple…

    2023年4月2日
    00
  • Python参数解析器configparser

    1.configparser介绍 configparser是python自带的配置参数解析器。可以用于解析.config文件中的配置参数。ini文件中由sections(节点)-key-value组成 2.安装: pip install configparse 3.获取所有的section import configparser cf = configpar…

    2023年4月2日
    00
  • Pycharm2019.1.3 安装/激活/汉化

    完美流程,提供所有安装包激活码,解决pycharm安装激活问题!建议收藏!!! 1.安装 Pycharm2019.1.3 安装包下载地址: 链接:https://pan.baidu.com/s/10r-sMUJh7YKS_TP05NehCQ?pwd=1234 提取码:1234 1.1.双击运行电脑中已下载好的PyCharm.2019.1.3安装包。还没下载的…

    2023年4月2日
    00
  • python基础语法/数据类型/运算符

    1.标识符 # -*- coding:utf-8 -*- # @Time :2021/1/16 10:28 # @Author :QAbujiaban # @Email :wbxztoo@163.com # @File :basic.py 1 # 单行注释 这是单行注释 2 ”’多行注释”’ 这是多行注释 3 “””多行注释””” 这是多行注释 2.标识…

    2023年4月2日
    00
  • Python异常处理

    1.异常处理 异常:在运行代码过程中遇到的任何错误,大有error字样的都为异常 异常处理:对代码中所有可能会出现的异常进行处理 疑问:我们为什么要处理异常? 2.异常代码 import os #创建一个已存在的文件夹 os.mkdir(“Eclipse”) #异常:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文…

    2023年4月2日
    00
  • Python3.7.3环境搭建

    Python3.7.3介绍 Python3.7.3安装(Win10) 到2019年初,Python3已经更新到了Python3.7.3,Python有两个大版本Python2和Python3,Python3是现在和未来的主流。 本文介绍Python3.7.3的安装步骤. 一、下载Python3.7.3 1.百度搜索Python,找到Python官网,点击进入…

    2023年4月2日
    00
  • Python之open()/OS

    1.File对象数据读写与操作 #def open(file, mode=’r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True): # known special case of open #file: 操作的文件 #mode:打开这个文件的模式 ‘r’ ope…

    2023年4月2日
    00
  • Python操作Excel(openpyxl)

    1.引入openpyxl库 安装openpyxl库:pip install openpyxl 引入openpyxl库:from openpyxl import load_worbook 2.代码实现 from openpyxl import load_workbook #打开Excel wb = load_workbook(“C:\Users\Adminis…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部