【接口自动化_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.xdnf.cn/news/1486043.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

MSP430M03507最小系统板的keil环境搭配,用keil编辑ti单片机

转载自嘉立创MSP430M03507开发手册 这篇文章只是因为我的keil版本与嘉立创的不一样,所以添加了我自己遇到的问题解析 先说说为什么要用keil编辑,因为ti单片机自己的ccs编译环境需要对应仿真器,那个加芯片都240了,哪有那么多钱买…

node.js中nodemon : 无法加载和使用问题,这是由于windows安全策略影起的按如下操作即可

1、用管理员权限打开vscode 2、文件终端中打开,输入 Set-ExecutionPolicy -Scope CurrentUser 3、再输入RemoteSigned 4、使用get-ExecutionPolicy查看权限,可以看到变为了RemoteSigned 重启问题解决

MySQL面试索引篇

1、什么是索引? 作为一个数据库,首要任务就是把数据存储好,并快速查询出用户需要的数据,而索引就相当于图书的目录一样,是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。 …

TypeScript 教程(九):类型声明文件与异步编程

目录 前言回顾装饰器与高级类型操控1. 类型声明文件a. 什么是类型声明文件(.d.ts)b. 编写和使用类型声明文件 2. 异步编程a. Promise 类型b. async/awaitc. 异步迭代器 3. 并行执行与错误处理a. Promise.allb. Promise.racec. 错误处理 结语 前言 在前几…

华为云.云日志服务LTS及其基本使用

云计算 云日志服务LTS及其基本使用 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550…

数学建模(7)——Logistic模型

一、马尔萨斯人口模型 import numpy as np import matplotlib.pyplot as plt# 初始人口 N0 100 # 人口增长率 r 0.02 # 时间段(年) t np.linspace(0, 200, 200)# 马尔萨斯人口模型 N N0 * np.exp(r * t)# 绘图 plt.plot(t, N, labelPopulation) plt.…

图片转pdf的软件有哪些?这几种转换工具了解下

在日常的办公学习中,图片转PDF的需求愈发普遍。不论是工作汇报、学习笔记还是生活点滴,我们都希望将重要的图片内容整理成易于查阅的PDF格式。那么,有哪些软件可以做到将图片转换成PDF格式呢?给大家介绍5种简单好用的转换方法&…

Linux第五节课(权限02)

1、Linux下的用户分类 root:超级用户普通用户:通过root新建的用户,adduser root不受权限约束;普通用户受权限约束; Linux系统中,所有用户都需要有密码,无论是root还是其他,即便是…

SpringBoot+ Sharding Sphere 轻松实现数据库字段加解密

一、介绍 在实际的软件系统开发过程中,由于业务的需求,在代码层面实现数据的脱敏还是远远不够的,往往还需要在数据库层面针对某些关键性的敏感信息,例如:身份证号、银行卡号、手机号、工资等信息进行加密存储&#xf…

优选算法之二分查找(上)

目录 一、二分查找 1.题目链接:704. 二分查找 2.题目描述: 3.算法流程: 4.算法代码: 二、在排序数组中查找元素的第一个和最后一个位置 1.题目链接:34. 在排序数组中查找元素的第一个和最后一个位置 2.题目描述…

matlab2018b安装

1.可先参考这个 2.激活 按上面教程安装后,打开matlab 可能会出现软件激活这个界面,需要按如下步骤进行操作。

从理论到实践:如何用 TDengine 打造完美数据模型​

在用 TDengine 进行数据建模之前,我们需要回答两个关键问题:建模的目标用户是谁?他们的具体需求是什么?在一个典型的时序数据管理方案中,数据采集和数据应用是两个主要环节。如下图所示: 对于数据采集工程师…

Bootstrap5 Navbar多级下拉框

实现目标&#xff1a; 1、访问 Bootstrap5-navbar 2、修改dropdown为多级 <!DOCTYPE HTML> <html lang"en-US"> <head><meta charset"UTF-8"><title></title><link rel"stylesheet" href"https…

Unity DOTS中的world

Unity DOTS中的world 注册销毁逻辑自定义创建逻辑创建world创建system group插入player loopReference DOTS中&#xff0c;world是一组entity的集合。entity的ID在其自身的世界中是唯一的。每个world都拥有一个EntityManager&#xff0c;可以用它来创建、销毁和修改world中的en…

[AWS]MSK调用,报错Access denied

背景&#xff1a;首先MSK就是配置一个AWS的托管 kafka&#xff0c;创建完成之后就交给开发进行使用&#xff0c;开发通常是从代码中&#xff0c;编写AWS的access_key 和secret_key进行调用。 但是开发在进行调用的时候&#xff0c;一直报错连接失败&#xff0c;其实问题很简单&…

【机器学习】机器学习之计算学习理论--评估机器学习能够学到什么程度

引言 计算学习理论&#xff08;Computational Learning Theory&#xff0c;CLT&#xff09;是机器学习的一个分支&#xff0c;它使用数学工具来分析和理解机器学习算法的效率和可能性 计算学习理论主要关注三个核心问题&#xff1a;学习模型的表示、学习算法的效率和学习的泛化…

Matlab画不同指标的对比图

目录 一、指标名字可修改 二、模型名字可修改 三、输入数据可修改 软件用的是Matlab R2024a。 clear,clc,close all figure1figure(1); % set(figure1,Position,[300,100,800,600],Color,[1 1 1]) axes1 axes(Parent,figure1);%% Initialize data points 一、指标名字可修…

Astro 4.12 发布,新增支持服务器岛屿

近日&#xff0c;Astro 发布了最新的 4.12 版本&#xff0c;此版本包含 Server Islands&#xff08;服务器岛屿&#xff09;&#xff0c;这是 Astro 将高性能静态 HTML 和动态服务器生成的组件集成在一起的新解决方案&#xff0c;此版本还包括对分页和语法突出显示的改进。 要…

如何检查我的网站是否支持HTTPS

HTTPS是一种用于安全通信的协议&#xff0c;是HTTP的安全版本。HTTPS的主要作用在于为互联网上的数据传输提供安全性和隐私保护。通常是需要在网站安装部署SSL证书来实现网络数据加密传输&#xff0c;安全加密功能。 那么如果要检查你的网站是否支持HTTPS&#xff0c;可以看下…

C#基于SkiaSharp实现印章管理(4)

前几篇文章实现了绘制不同外形印章的功能&#xff0c;印章内部一般包含圆形、线条等形状&#xff0c;有些印章内部还有五角星&#xff0c;然后就是各种样式的文字。本文实现在印章内部绘制圆形、线条、矩形、椭圆等四种形状。   定义FigureType枚举记录印章内部形状&#xff…