【接口自动化_06课_Pytest+Excel+Allure完整框架集成】

一、logging在接口自动化里的应用

1、设置日志的配置,并收集日志文件

日志的设置需要在pytest.ini文件里设置。这个里面尽量不要有中文

2、debug日志的打印

pytest.ini文件的开关一定得是true才能在控制台打印日志


import allure
import pytest
from P06_PytestFrame.api_keyword.api_key import ApiKey
import logging@allure.title("DS01-通过用户名可以正确登录")
def test_login():# 1. 最重要的日志打印logging.basicConfig(level=logging.DEBUG)logging.error("执行用例:DS01-通过用户名可以正确登录")url = "http://shop-xo.hctestedu.com/index.php?s=/api/user/login"params = {"application": "app", "application_client_type": "weixin"}data = {"accounts": "hami", "pwd": "123456", "type": "username"}ak = ApiKey()# 2. 发送请求res = ak.post(url=url, params=params, data=data)print(f"响应结果是:{res.json()}")# 3.断言sj_res = ak.get_text(res.json(), "$.msg")qw_res = "登录成功1"assert sj_res == qw_res, "结果不一致"

 控制台运行结果

日志收集文件里的存储结果

3、钩子函数

钩子函数放在conftest.py文件里

pytest官网:pytest: helps you write better programs - pytest documentation

return永远不执行后面的

迭代器会往复执行

二、所有接口的区别 

接口四要素不同--数据提取出来--就是数据驱动(DDT)

"数据驱动测试"(Data-Driven Testing,简称DDT)是一种软件测试方法,使用不同的数据集来驱动测试用例的执行。通过将测试数据与测试逻辑分离,DDT可以提高测试覆盖率、增强测试代码的可维护性,并减少重复代码。

1、数据格式

把所有的数据进行提取 - DDT(数据驱动)格式:
单元素:每次拿一个数据(有多少个就多少次)
()--元组,无序
[] --列表 ,有序
{}--字典 , 有序(python3.7开始字典有序,之前的无序)嵌套元素:每次拿一组数据,要取其中的值(可以通过下标去获取)
([],[])--元组里套列表 
[(),()]  --列表里套元组,因为元组无序,所以这个不能通过下标获取
[{},{}]  --列表套字典- 用的最多的一种格式 方法:--装饰器
@pytest.mark.parametrize("变量名",数据源)在运行过程当中,数据源有多少个就会执行多少次

1)单元素数据驱动

data1 = ("hami", "xiaomi", "sanfeng")  元组类型

获取元素的坐标结果

2)嵌套元素数据--列表里套元组

data2 = [("hami","123456"),("xiaomi","111111"),("sanfeng","22222")]

通过下标获取其一数据

 3)嵌套元素数据--列表里套字典

data3 = [{"name": "hami", "password": "123456"}, {"name": "xiaomi", "password":"11111"},{"name": "sanfeng", "password": "222222"}]

三、接口自动化用例模板的编写

要求:

1、编号和行号一致

 

2、 标黄色都是必填

3、请求数据的参数类型

data是表单形式提交,Json是请求头是json的去提交,files是上传文件的接口需要使用

4、断言的字段

5、程序执行完,自动回写的数据

四、读取文件的程序-FileDataDriver.py

用来读取和写入excel \ yaml文件。

利用数据驱动,把excel文件读取成功

五、config.py

用来存放常用的变量(文件路径、读取的sheet页),其中,常量要大写

要从文件的根目录的下一级开始读取文件,所以,config.py文件要在文件的根目录的下一级

如图,是day06.P06_PytestFrame

自己的代码-根目录是day06,下一级是P06_PytestFrame

 

下载指令:pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

六、data的路径

下面这些文件是在同一级目录里

 

如果是基于上一层目录下的一层(在二级目录里),则是../

如果只是处于同级目录,是./

七、核心执行器--testcase

拿到数据,进行解析,发送请求

1、反射

class ApiKey:name = "hami"def get(self):print("这是get方法")def post(self, url, data):print("这是post方法")print("url", url)print("data", data)return "ok"# 反射:通过[类(实例化对象)和方法名]找到对应的方法
# 反射的语法:getattr(实例化对象, 方法名/属性名)**参数 ,返回值:方法本体ak = ApiKey()
method = "post"
method_fun = getattr(ak, method)#(类,方法)
method_fun(url="1111",data="2222")

tips:

# eval() # 把字符串 转成[有效的表达式]
#
# a = "1+2"
# print(eval(a)) #3# data = "{'name':'hami'}"
# print(type(eval(data))) #dict

 2、断言

拿到响应数据,和预期数据,断言比较 

 3、动态生成标题:

使用固定的方法,动态生成标题 

 

然后生成的标题

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/376934.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 YUM 仓库和 NFS 共享存储的详细指南

使用 YUM 仓库和 NFS 共享存储的详细指南 文章目录 使用 YUM 仓库和 NFS 共享存储的详细指南一、YUM 仓库服务1.1 YUM 介绍1.2 YUM 源的提供方式1.2.1 配置本地源仓库1.2.2 配置 FTP 源1.2.3 配置 HTTP 源 1.3 网络源配置1.3.1 清华源1.3.2 163 源1.3.3 阿里云源 1.4 YUM 命令1…

IntelliJ IDEA自定义菜单(Menus)、任务栏(toolbars)详细教程

本示例是基于IDEA2024.1Ultimate版本的New UI模式下 一、自定义菜单 1、打开Settings,找到Menus and Toolbars 2、点击右边的Main Menu,点击号,选择Add Action 3、弹出Add Action弹窗,搜索或者选择你要添加的指令 二、自定义工具…

Linux命令更新-Vim 编辑器

简介 Vim 是 Linux 系统中常用的文本编辑器,功能强大、可扩展性强,支持多种编辑模式和操作命令,被广泛应用于程序开发、系统管理等领域。 1. Vim 命令模式 Vim 启动后默认进入命令模式,此时键盘输入的命令将用于控制编辑器本身&…

OpenCV 寻找棋盘格角点及绘制

目录 一、概念 二、代码 2.1实现步骤 2.2完整代码 三、实现效果 一、概念 寻找棋盘格角点(Checkerboard Corners)是计算机视觉中相机标定(Camera Calibration)过程的重要步骤。 OpenCV 提供了函数 cv2.findChessboardCorners…

LeetCode 441, 57, 79

目录 441. 排列硬币题目链接标签思路代码 57. 插入区间题目链接标签思路两个区间的情况对每个区间的处理最终的处理 代码 79. 单词搜索题目链接标签原理思路代码 优化思路代码 441. 排列硬币 题目链接 441. 排列硬币 标签 数学 二分查找 思路 由于本题所返回的 答案在区间…

【C++】入门基础(引用、inline、nullptr)

目录 一.引用 1.引用的定义 2.引用的特性 3.引用的使用场景 4.const引用 5.引用和指针的区别 二.inline 三.nullptr 一.引用 1.引用的定义 引用不是新定义一个变量,而是给已经存在的变量取一个别名,编译器不会给引用变量开辟内存空间&#xff0c…

检测精度评价指标召回率和精确率

检测精度评价指标为: 1、召回率(Recall Rate ) 2、平均精度均值(mAP) 3、平均对数漏检率(MR-2) 计算 TP 和 FP 的示例 假设你有一个目标检测模型,并使用它检测图像…

Git代码管理工具 — 3 Git基本操作指令详解

目录 1 获取本地仓库 2 基础操作指令 2.1 基础操作指令框架 2.2 git status查看修改的状态 2.3 git add添加工作区到暂存区 2.4 提交暂存区到本地仓库 2.5 git log查看提交日志 2.6 git reflog查看已经删除的记录 2.7 git reset版本回退 2.8 添加文件至忽略列表 1 获…

在conda的环境中安装Jupyter及其他软件包

Pytorch版本、安装和检验 大多数软件包都是随Anaconda安装的,也可以根据需要手动安装一些其他软件包。 目录 创建虚拟环境 进入虚拟环境 安装Jupyter notebook 安装matplotlib 安装 pandas 创建虚拟环境 基于conda包的环境创建、激活、管理与删除http://t.cs…

(实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee

★硬件资源:本文章以STM32L431RCT6做主控芯片做验证; ★IDE开发环境:RT Thread stdio; ★RT Thread 版本:V4.0.3 一、RT Thread Stdio加载软件包 1、如下图所示,通过RT Thread Stdio加载的软件包&#…

gd32发送数据,定义参数,接收中断

void usart_receive_data(uint8_t ucch) {usart_data_receive(UART3); } void usart_send_data(uint8_t ucch) {usart_data_transmit(UART3,(uint8_t)ucch);while(usart_flag_get(UART3,USART_FLAG_TBE) RESET); } 这是在c文件中定义函数,之后在h文件中声明&#…

Windows终端远程登陆Linux服务器(SSH+VScode)

W i n d o w s 终端远程登陆 L i n u x 服务器( S S H V S c o d e ) \huge{Windows终端远程登陆Linux服务器(SSHVScode)} Windows终端远程登陆Linux服务器(SSHVScode) 文章目录 写在前面通过SSH远程连接L…

4000厂商默认账号密码、默认登录凭证汇总.pdf

获取方式: 链接:https://pan.baidu.com/s/1F8ho42HTQhebKURWWVW1BQ?pwdy2u5 提取码:y2u5

【总线】AXI第九课时:介绍AXI响应信号 (Response Signaling):RRESP和 BRESP

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁…

28.【C语言】库函数

1.函数定义 在计算机科学中,子程序是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏…

AC修炼计划(AtCoder Regular Contest 180) A~C

A - ABA and BAB A - ABA and BAB (atcoder.jp) 这道题我一开始想复杂了,一直在想怎么dp,没注意到其实是个很简单的规律题。 我们可以发现我们住需要统计一下类似ABABA这样不同字母相互交替的所有子段的长度,而每个字段的的情况有&#xff…

目标检测基本标注工具-labelImg安装与使用

🍉一、安装 1.1 打开conda创建虚拟环境🎈 conda create -n labelImg python3.8 -y 1.2 激活labelImg虚拟环境🎈 activate labelImg1.3 安装labelImg🎈 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple lab…

Rust vs Go: 特点与应用场景分析

目录 介绍Rust的特点Go的特点Rust的应用场景Go的应用场景总结 介绍 Rust和Go(Golang)是现代编程语言中两个非常流行的选择。凭借各自的独特优势和广泛的应用场景,吸引了大量开发者的关注。本文将详细介绍Rust和Go的特点,并探讨它…

golang程序性能提升改进篇之文件的读写---第一篇

背景:接手的项目是golang开发的(本人初次接触golang)经常出现oom。这个程序是计算和io密集型,调用流量属于明显有波峰波谷,但是因为各种原因,当前无法快速通过serverless或者动态在高峰时段调整资源&#x…

python的简单爬取

需要的第三方模块 requests winr打开命令行输入cmd 简单爬取的基本格式(爬取百度logo为例) import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回应 #保存到本地 with open(&…