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

目标:优化框架场景

1. 生成对应的接口关联【重点】

2. 优化URL基础路径封装【理解】

3. 利用PySQL操作数据库应用【理解】--- 怎么用python连接数据库、mysql

4. 通过数据库进行数据库断言【重点】

5. 通过数据库进行关联操作【重点】

一、接口关联:(测试业务场景)

登录成功 --- 加入购物车成功(没有token)

1. 登录成功之后需要提取数据 ---

格式:{“变量名”:“jsonpath值”} {"VAR_TOKEN":"$..data.token","MSG":"$.msg"}

提取数据方法--- 提取出来进行存储 -- all_var

1. 方法 ---数据存储到公共的变量all_var当中。

all_var = {}exdata = {"VAR_TOKEN":"$..data.token","MSG":"$.msg"}for key, value in exdata.items():  valueJson = value+"提取出来的值"all_var.update({key: valueJson})print(all_var)

 运行结果

2. 加入购物车需要引用这个数据

{{变量名}}

代码层面需要修改,增加一句代码即可。

加的两行代码是:

#导入这个模板--固定的
from jinja2 import Template#  Template(数据A)  这个数据A必须是字符串的格式,所以是数据A = str(数据B)类型转化
#  render()  可以把  render(数据D),通过花括号{}+变量名={{变量名}}替换到 Template(数据A的模板里)
#  eval()里面是字典的格式CaseData = eval(Template(str(CaseData)).render(self.all_var))一共就上面两句

实际应用:

@pytest.mark.parametrize("CaseData", AllCaseData)def testData(self, CaseData):print("当前执行的测试用例接口:", CaseData)self.dynamic_title(CaseData)CaseData = eval(Template(str(CaseData)).render(self.all_var))

 简单应用的例子:

from jinja2 import Templateall_var = {"VAR_TOKEN": "4534131231231321321", "BOOK_ID": 178}
CaseData = {"url": "http://novel.hctestedu.com/book/queryBookDetail/{{BOOK_ID}}", "params": '{"token":"{{VAR_TOKEN}}"}'}
CaseData2 = eval(Template(str(CaseData)).render(all_var))  # 变量渲染--其实就是数据替换
print(CaseData2)

二、接口风格:

1、传统api 

发送请求: get 、post (居多)

http://localhost:8080/admin/getUser (查询用户) --- get请求

http://localhost:8080/admin/addUser (新增用户) --- post请求

http://localhost:8080/admin/updateUser (更新用户)--- post请求

http://localhost:8080/admin/deleteUser (删除用户)--- pos请求

2、restFul风格

一. 什么是Restful风格
1.1 概念
RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用 XML 格式定义或 JSON 格式定义。最常用的数据格式是JSON。由于JSON能直接被JavaScript读取,所以,使用JSON格式的REST风格的API具有简单、易读、易用的特点。1.是一种风格,不是协议规定,这种风格更简介美观
2.基于HTTP,可以使用 XML 格式定义或 JSON 格式定义,前后端分离时代都用json传递数据了
————————————————原文链接:https://blog.csdn.net/weixin_43189971/article/details/126024564

灵活的应用请求方法

GET http://localhost:8080/admin/user/10(查询用户)

POST http://localhost:8080/admin/user (新增用户)

PUT http://localhost:8080/admin/user (更新用户)

DELETE http://localhost:8080/admin/user (删除用户)

http://novel.hctestedu.com/book/queryBookDetail/178

178 --- {书籍的ID}

修改数据成功之后(获取书籍ID ),调用查看详情的接口(引用ID)

http://novel.hctestedu.com/book/queryBookDetail/{{BOOK_ID}}

三、数据库操作

数据库的提取:

  1. 连接数据库
  2. 什么情况下进行数据的提取--比如注册完毕,进行提取;新增数据完毕、进行提取,
  3. sqlExData 字段 :思路和响应提取完全一样,只是一个是写jsonpath 一个是写sql而已。

1、数据库模块

1)数据库连接和操作

# 连接数据库# 1. 知道数据库用的什么第三方模块 - pymysql
# 2. 数据库的连接信息是什么?
# 主机(host,注意没有www):shop-xo.hctestedu.com
# 端口:3306
# 用户名:api_test
# 密码:Aa9999!
# 数据库名:shopxo_hctestedimport pymysql# 1. 配置数据库连接信息并连接
connection = pymysql.connect(host='shop-xo.hctestedu.com',  # 数据库地址port=3306,user='api_test',  # 数据库用户名password='Aa9999!',  # 数据库密码db='shopxo_hctested',  # 数据库名称# charset = 'utf8 -- UTF-8 Unicode'  #设置编码格式
)

这个需要写到配置文件里,作为数据库连接的常量

可以在关键字驱动里引用数据库连接的常量

 2)创建游标--操作数据库

# 创建游标对象,使用它进行操作 ---相当于操作员
cursor = connection.cursor()

3)SQL链表查询

# SQL语句 (链表查询一定要会)
sql = "SELECT id,username,nickname FROM sxo_user where username='hami'"

4) 使用游标对象操作SQL

# 使用游标对象去执行操作SQL
cursor.execute(sql)# 得到结果集的下一行
result = cursor.fetchone()
print(result)  # 返回的元组格式。

5)关闭数据库连接

# 关闭数据库连接
cursor.close()

 tips:

Ctrl + Shift + u   可以来回切换大小写HHTTP  -  http

2、数据提取

  1. 什么情况下进行数据的提取--比如注册完毕,进行提取;新增数据完毕、进行提取,
  2. sqlExData 字段 :思路和响应提取完全一样,只是一个是写jsonpath 一个是写sql而已。

从json提取,变成sql提取

{"name":"SELECT username FROM sxo_user WHERE username='hami'",

"id":"SELECT id FROM sxo_user WHERE username='hami'"}

3、数据库断言:

常用场景:新建用户数据-- 用户表:用户, 新建书籍--- 书籍表:书籍

excel :多2个字段

期望结果:{"id":75,"name":"hami"}

实际结果:{"name":"SELECT username FROM sxo_user WHERE username='hami'",

"id":"SELECT id FROM sxo_user WHERE username='hami'"}

{"id":75,"name":"hami"}

assert 期望结果== 实际结果

期望结果-75 ,可以断言成功

把这个改为89--就会执行断言失败 

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

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

相关文章

【QAC】分布式部署下其他机器如何连接RLM

1、 文档目标 解决分布式部署下其他机器如何连接RLMLicense管理器。 2、 问题场景 分布式部署下QAC要在其他机器上单独运行扫描,必须先连接RLMLicense管理器,如何连接? 3、软硬件环境 1、软件版本:HelixQAC23.04 2、机器环境…

【算法/训练】:前缀和差分

🚀 前言: 前面我们已经通过 【算法/学习】前缀和&&差分-CSDN博客 学习了前缀和&&差分的效相关知识,现在我们开始进行相关题目的练习吧 1. 校门外的树 思路:给[0, n]的数组都标记为1,然后输出m行范围…

基于 PyTorch 的模型瘦身三部曲:量化、剪枝和蒸馏,让模型更短小精悍!

基于 PyTorch 的模型量化、剪枝和蒸馏 1. 模型量化1.1 原理介绍1.2 PyTorch 实现 2. 模型剪枝2.1 原理介绍2.2 PyTorch 实现 3. 模型蒸馏3.1 原理介绍3.2 PyTorch 实现 参考文献 1. 模型量化 1.1 原理介绍 模型量化是将模型参数从高精度(通常是 float32&#xff0…

Elasticsearch:Retrievers 介绍 - Python Jupyter notebook

在今天的文章里,我是继上一篇文章 “Elasticsearch:介绍 retrievers - 搜索一切事物” 来使用一个可以在本地设置的 Elasticsearch 集群来展示 Retrievers 的使用。在本篇文章中,你将学到如下的内容: 从 Kaggle 下载 IMDB 数据集…

Linux云计算 |【第一阶段】SERVICES-DAY5

主要内容: 源码编译安装、rsync同步操作、inotify实时同步、数据库服务基础 实操前骤:(所需tools.tar.gz与users.sql) 1.两台主机设置SELinnx和关闭防火墙 setenforce 0 systemctl stop firewalld.service //停止防火墙 sy…

MySQL定时备份数据,并上传到oss

1.环境准备 1.安装阿里云的ossutil 2.安装mysql 2.编写脚本 脚本内容如下 #!/bin/bash # 数据库的配置信息,根据自己的情况进行填写 db_hostlocalhost db_usernameroot db_passwordroot db_namedb_root # oss 存贮数据的bucket地址 bucket_namerbsy-backup-buck…

软件更新的双刃剑:从”微软蓝屏”事件看网络安全的挑战与对策

引言 原文链接 近日,一场由微软视窗系统软件更新引发的全球性"微软蓝屏"事件震惊了整个科技界。这次事件源于美国电脑安全技术公司"众击"提供的一个带有"缺陷"的软件更新,如同一颗隐形炸弹在全球范围内引爆,…

Python面试宝典第17题:Z字形变换

题目 将一个给定字符串 s 根据给定的行数numRows ,以从上往下、从左到右进行Z字形排列。比如:输入字符串为"PAYPALISHIRING",行数为3时,排列如下。最后,你的输出需要从左往右逐行读取,产生出一个…

unity 实现图片的放大与缩小(根据鼠标位置拉伸放缩)

1创建UnityHelper.cs using UnityEngine.Events; using UnityEngine.EventSystems;public class UnityHelper {/// <summary>/// 简化向EventTrigger组件添加事件的操作。/// </summary>/// <param name"_eventTrigger">要添加事件监听的UI元素上…

DevExpress中文教程 - 如何在.NET MAUI应用中实现Material Design 3?

DevExpress .NET MAUI多平台应用UI组件库提供了用于Android和iOS移动开发的高性能UI组件&#xff0c;该组件库包括数据网格、图表、调度程序、数据编辑器、CollectionView和选项卡组件等。 获取DevExpress v24.1正式版下载 Material Design是一个由Google开发的跨平台指南系统…

HydraRPC: RPC in the CXL Era——论文阅读

ATC 2024 Paper CXL论文阅读笔记整理 问题 远程过程调用&#xff08;RPC&#xff09;是分布式系统中的一项基本技术&#xff0c;它允许函数在远程服务器上通过本地调用执行来促进网络通信&#xff0c;隐藏底层通信过程的复杂性简化了客户端/服务器交互[15]。RPC已成为数据中心…

【Hot100】LeetCode—279. 完全平方数

目录 题目1- 思路2- 实现⭐完全平方数——题解思路 3- ACM 实现 题目 原题连接&#xff1a;279. 完全平方数 1- 思路 思路 动规五部曲 2- 实现 ⭐完全平方数——题解思路 class Solution {public int numSquares(int n) {// 1. 定义 dpint[] dp new int[n1];//2. 递推公式…

论文学习记录之一种具有边缘增强特点的医学图像分割网络

标题&#xff1a;一种具有边缘增强特点的医学图像分割网络 期刊&#xff1a;电子与信息学报-&#xff08;2022年5月出刊&#xff09; 摘要&#xff1a;针对传统医学图像分割网络存在边缘分割不清晰、缺失值大等问题&#xff0c;该文提出一种具有边缘增强特点的医学图像分割网…

社交圈子小程序搭建-源码部署-服务公司

消息通知:当有新的消息、评论或回复时&#xff0c;用户需要收到系统的推送通知&#xff0c;以便及时查看和回复 活动发布与参加:用户可以在社交圈子中发布各种类型的活动&#xff0c;如聚餐、旅游、运动等。其他用户可以参加这些活动&#xff0c;并与组织者进行交流和沟通 社交…

C#初级——输出语句和转义字符

输出语句 在C#中&#xff0c;C#的输出语句是通过Console类进行输出&#xff0c;该类是一个在控制台下的一个标准输入流、输出流和错误流。使用该类下的Write()函数&#xff0c;即可打印要输出的内容。 Console.Write("Hello World!"); //在控制台应用中打印Hell…

通过QT进行服务器和客户端之间的网络通信

客户端 client.pro #------------------------------------------------- # # Project created by QtCreator 2024-07-02T14:11:20 # #-------------------------------------------------QT core gui network #网络通信greaterThan(QT_MAJOR_VERSION, 4): QT widg…

Docker安装nacos(详细教程)

Nacos 是一个开源的动态服务发现、配置管理和服务管理平台&#xff0c;广泛用于微服务架构中。在本文章中&#xff0c;博主将详细介绍如何使用 Docker 来安装 Nacos&#xff0c;以便快速启动并运行这个强大的服务管理工具。 前置条件 在开始安装 Nacos 之前&#xff0c;请确保…

pytorch 笔记:torch.optim.Adam

torch.optim.Adam 是一个实现 Adam 优化算法的类。Adam 是一个常用的梯度下降优化方法&#xff0c;特别适合处理大规模数据集和参数的深度学习模型 torch.optim.Adam(params, lr0.001, betas(0.9, 0.999), eps1e-08, weight_decay0, amsgradFalse, *, foreachNone, maximizeFa…

I2C总线二级外设驱动开发(函数和代码详解)

I2C总线二级外设驱动开发是一个涉及多个步骤和函数调用的过程&#xff0c;主要目的是使得挂接在I2C总线上的外设能够正常工作。 一、I2C总线二级外设驱动开发概述 I2C总线是一种广泛使用的串行通信总线&#xff0c;用于连接微控制器及其外围设备。在Linux内核中&#xff0c;I2…

实验四 FPGA 使用Verilog HDL设计电机运动控制程序

实验目的 1.掌握使用GPIO控制直流电机的原理。 2.掌握使用Verilog HDL设计电机运动控制程序的方法。 实验要求 采用Verilog HDL语言设计直流电机运动控制程序&#xff0c;实现直流电机的运动控制&#xff0c;并通过数码管显示当前输出的PWM波的占空比。通过按键或拔位开关可…