当前位置: 首页 > article >正文

pytest 接口测试

pytest

核心重点
读取excel(xfile --> read)
函数循环执行( @pytest 装饰器,自动解析,一个个单独执行)
接口关联(Template 处理参数变量)

pytest 是什么

.py文件名 用 test_开头,函数用 test_开头,运行的时候,pycharm会自动用pytest模式去执行代码!

处理excel 文件

点击获取excel 文件

核心思想: 把excel 文件的内容转化为 python的字典数组

可以先阅读 python函数 函数

注意: 需要xToolkit 只能读取 xls

from xToolkit import xfile

test_res = xfile.read('test.xls').excel_to_dict('Sheet1')
print(test_res)
print(test_res[0]['接口URL'])

for data in test_res:
    print(data['接口URL'])

在这里插入图片描述

使用pytest 自动循环执行


import  requests
from xToolkit import xfile
import pytest

# 读取excel 文件,生成字典数组
test_res = xfile.read('test.xls').excel_to_dict('Sheet1')
print(test_res)
# print(test_res[0]['接口URL'])
#
# for data in test_res:
#     print(data['接口URL'])


# 自动循环执行; data:传递的参数,test_res: 需要解析的列表
@pytest.mark.parametrize('data', test_res)
def test_excute(data):
    res = requests.request(method=data['请求方式'],
                           url=data['接口URL'])
    print(res.url)

if __name__ == '__main__':
    pytest.main(['-s', 'test2.py'])
    pytest.main(["-vs"])

在这里插入图片描述

token

template

举例: 测试购物车,需要token,但是token每次都会变

Template会自动拿字典里的value去替换掉与花括号单词相同的key

在这里插入图片描述

接口封装

from string import Template

import  requests
from jsonpath import jsonpath
from xToolkit import xfile
import pytest

# 读取excel 文件,生成字典数组
test_res = xfile.read('test.xls').excel_to_dict('Sheet1')
print(test_res)
print(test_res[0]['提取参数'])
#
# for data in test_res:
#     print(data['接口URL'])

dir = {"token":'ceshi123'}
dic = { }


# 自动循环执行; data:传递的参数,test_res: 需要解析的列表
@pytest.mark.parametrize('data', test_res)
def test_excute(data):
    url = data['接口URL']
    if "$" in url:
        # url = Template(url).substitute(dic)
        url = Template(url).substitute(dir)
    print(url)
    res = requests.request(method=data['请求方式'],
                           url=url)
    print(res.url)
    if data["提取参数"]:
        print([data["提取参数"]])
        # key : excel 文档里面的提取参数 ; value: url 返回获取到的
        # tq = jsonpath.jsonpath(res.json(), '$..' + data["提取参数"])   # $..token $..good_id
        # dic[data["提取参数"]] = tq[0]

if __name__ == '__main__':
    pytest.main(['-s', 'test2.py'])
    pytest.main(["-vs"])

在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/307438.html

相关文章:

  • mongoDB的安装及使用
  • 【算法】——二分查找合集
  • ISAAC SIM踩坑记录--ubuntu 22.04操作系统安装
  • 【学习笔记】数据结构(七)
  • 免费HTML模板和CSS样式网站汇总
  • Day09 C++ 存储类
  • C++——写一函数求sinh(x)的值,求sinh(x)的近似公式为sinh(x)=(e^x+e^(-x))/2。
  • Java项目: 基于SpringBoot+mybatis+maven校园资料分享平台(含源码+数据库+答辩PPT+毕业论文)
  • 时空大数据平台:激活新质生产力的智慧引擎
  • GitLab CI_CD 从入门到实战笔记
  • 响应式CSS 媒体查询——WEB开发系列39
  • 【系统架构设计师-2015年真题】案例分析-答案及详解
  • vulkano (rust) 画一个三角形 (vulkan 渲染窗口初始化 (Linux) 下篇)
  • [000-002-01].第03节:Linux系统下Oracle的安装与使用
  • 【C++11 —— 线程库】
  • 近乎实时的物联网数据管道架构
  • 大数据新视界 --大数据大厂之MongoDB与大数据:灵活文档数据库的应用场景
  • 微信小程序如何设置左侧导航栏跟随页面滑动
  • Leetcode—1137. 第 N 个泰波那契数【简单】
  • uniapp 实现Toast轻提示!
  • 分类预测|基于黑翅鸢优化最小二乘支持向量机分类预测Matlab程序BKA-LSSVM 多特征输入多类别输出 含基础LSSVM
  • 面试—MySQL
  • 自制一键杀死端口进程程序# tomcat 如何杀死tomcat进程
  • 【C++题目】1.日期差值
  • MySQL篇(运算符)(持续更新迭代)
  • bat批量修改文件名