ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pytest数据驱动应用-excel测试用例数据读取封装

2022-09-01 20:04:31  阅读:245  来源: 互联网

标签:case self excel pytest json 测试用例 data


接口测试数据存放

  excel、json、yaml、数据库

实例:注册功能

参数 变量名 类型 说明 是否必填
手机号 mobile_phone int 新用户的手机号
密码 pwd string 8-16位
类型 type int 0:管理员,1:普通用户(默认为1)
注册名 reg_name string 昵称:长度最大为10位(不填写有默认值)

读取出来应该是一个大的列表,列表里面放的每一条测试用例,测试用例是一个字典(使用openpyxl)

 步骤:

1、对操作进行封装(请求头、发送请求的操作)

MyRequests.py
""" 对操作进行封装 """ import requests class MyRequests: """ 将共性提取出来 headers="http://api.lemonban.com/futureloan" """ def __init__(self): #请求头 self.headers={ "X-Lemonban-Media-Type":"lemonban.v2" } """ 定义一个私有方法,处理请求头(有的请求头有token) """ def __deal_header(self,token=None): if token: self.headers["Authorization"]="Bearer {}".format(token)#添加字典元素 """ 发请求方法封装 method=post或者get """ def send_requests(self,method,url,json=None,params=None,token=None): self.__deal_header(token)#处理请求头 #调用requests方法 resp=requests.request(method,url,json=json,params=params,headers=self.headers) return resp

2、对读取数据的操作进行封装(将excel的测试用例以字典的形式一条一条读取出来)

My_Excel.py
"""
    封装读取表单测试用例的方法
"""
from openpyxl import load_workbook
class MyExcel:
    def __init__(self,excel_path,sheet_name):
        """
            打开工作簿,选择一个表单
        """
        wb=load_workbook(excel_path)#加载一个excel,得到工作簿对象
        self.sh=wb[sheet_name]
    def read_data(self):
        """
            读取excel表单数据
        """
        data=list(self.sh.values)#将生成器转换为列表
        header=data[0]
        case_data=[]
        for row in data[1:]:
            row_dict=dict(zip(header,row))#将头部和用例打包
            case_data.append(row_dict)
        return case_data
#返回的是一个列表,列表中每一条数据都是一个用例

3、执行用例

"""
    测试步骤
    1、读取注册接口的测试数据-读取出来是个列表,列表中每个成员都是一个测试用例
    2、遍历测试数据,每组数据发起一个http请求
"""
import pytest
import json
from common.MyRequests import MyRequests
from common.My_Excel import MyExcel
#1、读取注册接口的测试数据-读取出来是个列表,列表中每个成员都是一个测试用例
excel_path=r'D:\study\study_API\day5\testdata\测试用例.xlsx'#测试用例的存放路径
myexcel=MyExcel(excel_path,'注册接口')
cases=myexcel.read_data()
#2、遍历测试数据,每组数据发起一个http请求
myrequests=MyRequests()
class TestRegister:
    @pytest.mark.parametrize("case",cases)
    def test_register(self,case):
        #需要把请求参数cases转换为字符串
        req_dict=json.loads(case['req_data'])
        resp=myrequests.send_requests(case["method"],case["url"],json=req_dict)
        print(resp.json())

 

标签:case,self,excel,pytest,json,测试用例,data
来源: https://www.cnblogs.com/zx19/p/16052296.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有