【接口自动化_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、动态生成标题:
使用固定的方法,动态生成标题
然后生成的标题
相关文章:

【接口自动化_06课_Pytest+Excel+Allure完整框架集成】
一、logging在接口自动化里的应用 1、设置日志的配置,并收集日志文件 日志的设置需要在pytest.ini文件里设置。这个里面尽量不要有中文 2、debug日志的打印 pytest.ini文件的开关一定得是true才能在控制台打印日志 import allure import pytest from P06_PytestFr…...

Profibus协议转Profinet协议网关模块连接智能电表通讯案例
一、背景 在工业自动化领域,Profibus协议和Profinet协议是两种常见的工业通讯协议,而连接智能电表需要用到这两种协议之间的网关模块。本文将通过一个实际案例,详细介绍如何使用Profibus转Profinet模块(XD-PNPBM20)实…...

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(九)-无人机服务区分离
引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…...

acrobat 中 PDF 复制时不能精确选中所选内容所在行的一种解决方法
现象:划取行的时候,自动扩展为多行 如果整段选中复制,粘贴后是乱码 解决步骤 识别完,保存 验证 可以按行复制了。 如果遇到仅使用 acrobat OCR 不能彻底解决的,更换其他自己熟悉的进行 OCR。...

安卓学习中遇到的问题【bug】
安卓学习中遇到的问题 1Gradle下载慢怎么办? Gradle下载慢怎么办? distributionUrlhttps://mirrors.cloud.tencent.com/gradle/gradle-7.5-bin.zip 2 Could not resolve all files for configuration ‘:classpath‘. > Could not resolv…...

【日常记录】【CSS】display:inline 的样式截断
文章目录 1. 案例2. css属性:box-decoration-break参考地址 1. 案例 现在有一篇文章,某些句子,是要被标记的,加一些css 让他突出一下 可以看到,在最后,断开了,那如若要让 断开哪里的样式 和 开始…...
数据库系统安全
数据库安全威胁 数据库作为信息系统中的核心组成部分,存储和管理着大量敏感和关键的数据,成为网络攻击者的主要目标之一。以下是常见的数据库安全威胁及其详细描述: 一、常见数据库安全威胁 SQL注入攻击(SQL Injectionÿ…...
Qt MV架构-代理模型
一、基本概念 代理模型可以将一个模型中的数据进行排序或者过滤,然后提供给视图进行显示。 Qt中提供了QSortFilterProxyModel作为标准的代理模型来完成模型中数据的排序和过滤。 要使用一个代理模型,则只需要为其设置源模型,然后再视图中使…...

WebSocket实现群聊功能、房间隔离
引用WebSocket相关依赖 <dependency><groupId>javax.websocket</groupId><artifactId>javax.websocket-api</artifactId><version>1.1</version></dependency><dependency><groupId>org.springframework</grou…...

顶顶通呼叫中心中间件实现随时启动和停止质检(mod_cti基于FreeSWITCH)
文章目录 前言联系我们拨号方案启动停止ASR执行FreeSWITCH 命令接口启动ASR接口停止ASR接口 通知配置cti.json配置质检结果写入数据库 前言 顶顶通呼叫中心中间件的实时质检功能是由两个模块组成:mod_asr 和 mod_qc。 mod_asr:负责调用ASR将用户们在通…...

基于conda包的环境创建、激活、管理与删除
Anaconda是一个免费、易于安装的包管理器、环境管理器和 Python 发行版,支持平台包括Windows、macOS 和 Linux。下载安装地址:Download Anaconda Distribution | Anaconda 很多不同的项目可能需要使用不同的环境。例如某个项目需要使用pytorch1.6&#x…...
处理线程安全的列表CopyOnWriteArrayList 和Collections.synchronizedList
ConcurrentModificationException 是 Java 中的一种异常,用于指示在迭代集合时,该集合的结构发生了并发修改。 在 Java 中,许多集合类(如 ArrayList, HashMap 等)都不是线程安全的。如果一个线程在迭代集合的同时&…...

技术成神之路:设计模式(六)策略模式
1.介绍 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,封装每一个算法,并使它们可以相互替换。策略模式使得算法的变化独立于使用算法的客户端。 2.主要作用 策略模式的主要作用是将算法或行为…...
华为OD机考题(HJ90 合法IP)
前言 经过前期的数据结构和算法学习,开始以OD机考题作为练习题,继续加强下熟练程度。 描述 IPV4地址可以用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成…...

值得关注的数据资产入表
不错的讲解视频,来自:第122期-杜海博士-《数据资源入表及数据资产化》-大数据百家讲坛-厦门大学数据库实验室主办第122期-杜海博士-《数据资源入表及数据资产化》-大数据百家讲坛-厦门大学数据库实验室主办-20240708_哔哩哔哩_bilibili...
Postman API性能测试:解锁高级技巧的宝库
🚀 Postman API性能测试:解锁高级技巧的宝库 在API开发和测试过程中,性能测试是确保API稳定性和可靠性的关键环节。Postman作为API测试的强大工具,提供了多种性能测试功能和高级技巧,帮助开发者深入分析API的性能表现…...

stm32中断详解
stm32中断详解 文章目录 stm32中断详解1.什么是中断?1.STM32中断系统特点2.中断处理流程3.中断配置与使用 2.AFIO寄存器3.NVIC寄存器3.中断分组、抢占优先级和响应优先级1. 中断分组2. 抢占优先级3. 响应优先级4.配置与应用 4.中断服务函数5.配置中断流程1.配置外设…...
【LeetCode】最小栈
目录 一、题目二、解法完整代码 一、题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元…...

链接追踪系列-09.spring cloud项目整合elk显示业务日志
准备工作: 参看本系列之前篇:服务器安装elastic search 本机docker启动的kibana-tencent 使用本机安装的logstash。。。 本微服务实现的logstash配置如下: 使用腾讯云redis 启动本机mysql 启动本机docker 启动nacos,微服务依赖它作为…...
老年生活照护实训室:让养老护理更个性化
本文探讨了老年生活照护实训室在实现养老护理个性化方面的重要作用。通过分析其提供的实践环境、专业培训、模拟案例和评估机制,阐述了如何培养护理人员的个性化服务能力,以满足老年人多样化的需求,提高养老护理的质量和满意度。 在老龄化社会…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...