Pytest接口测试框架实战项目搭建(三)

news/2024/4/24 14:39:26/文章来源:https://blog.csdn.net/m0_60054525/article/details/128106069

一、前言

  前面相当于已经讲完整体框架搭建了,本篇主要讲述在实际业务系统的接口请求中,如何运用好该接口自动化测试框架。

二、步骤演示

1、在conf/api_path.py新增需要测试的接口,标黄底色为新加

  存放测试接口仅这一个文件就行,有需要测试的接口直接往里面加就好了。

# -*- coding:utf-8 -*-
'''
@Date:2022/10/3  20:56
@Author:一加一
'''from tools.operate_config import OperateConfig
from urllib.parse import urljoinclass ApiPath:'''管理api地址'''def __init__(self,env=None):if env is None:self.env = OperateConfig().get_node_value('ENV', 'env')else:self.env = envself.y_api_url = OperateConfig().get_node_value(self.env,'y_api_url') #读取配置文件config.ini 的业务系统接口域名self.s_api_url = OperateConfig().get_node_value(self.env, 's_api_url') #读取配置文件config.ini 的s系统接口域名# s系统 apiself.s_login_url = urljoin(self.s_api_url, "/xxx/auth/login") #登录self.s_exchangeToken_url = urljoin(self.s_api_url, "/xxx/auth/exchangeToken") #生成sTokenself.employee_paging_list = urljoin(self.s_api_url,"/xxx/employee/paging/list") #查询员工列表获取companyId#  C系统 apiself.c_customer_info_page = urljoin(self.y_api_url, "/xxx/customer-info/page") #客户列表查询

2、 在data文件夹下新增qa1_c.json文件,用于存放接口的请求body

  json文件按环境区分,比如qa1环境的业务系统C,就建一个qa1_c.json;qa1环境的业务系统B,就建一个qa1_b.json;若是qa2,则再新建一个qa2_b.json

  所以qa1环境的业务系统C,所有接口的请求body均放在该文件里就好了,写法规则为:"接口名称":{json数据},具体如下(为了便于理解,下面写了2个接口的请求body,标黄的是本次演示的客户列表查询接口的请求body)

{"customer_info_page": {"pageNum": 1,"pageSize": 10,"cName": "上海有限公司","cState": "","sName": "","proState": "","buType": "","rnCode": "","unRisk": "0"},"customer_sure": {"ccId": "6968800792","fileList": [{"url": "/a9b982e8067242899f8524e988918405.jpeg","name": "baibu.jpeg"}]}
}

3、在tools文件夹下新增get_cjson.py,用于读取业务系统C的接口请求body,即读取qa1_c.json里的数据

  一个系统只需要建一个读取json的公共方法就行了,比如要获取业务系统C的json数据,就建get_cjson.py,要获取业务系统B的json数据就建get_bjson.py

知识点:B接口的id是依赖A接口返回的id,所以需要用到封装好的修改json方法,具体看set_c_customer_sure_id(self,ccId)函数的处理

# -*- coding:utf-8 -*-from conf.setting import CASE_DATA_PATH
from tools.operate_json import OperationJson
from tools.operate_config import OperateConfig
import osclass GetcJson:def __init__(self,env):if env is None:env = OperateConfig().get_node_value('ENV', 'env')self.c_data_json = os.path.join(CASE_DATA_PATH, env + "_c.json")  # 按配置文件设置的环境读取,比如这里读取的文件就是qa1_c.json# 获取客户列表查询的jsondef get_c_customer_info_page(self):return OperationJson(self.c_data_json).key_get_data("customer_info_page")#客户确认接口:给变量字段set值def set_c_customer_sure_id(self,ccId):OperationJson(self.c_data_json).write_datas(ccId, "customer_sure", "ccId")

4、在testcase文件夹下新增test_cc.py,用于编写业务测试用例

  注意类名要用Test开头,可直接执行该文件,或者用excute.py执行

'''
@Date:2022/11/13  18:36
@Author:一加一
'''import allure
from tools.common import *
from tools.get_cjson import *
from conf.api_path import ApiPath
from tools.get_headerjson import *@allure.feature("CC业务")
@allure.story("客户管理")
class TestCc:# 实例化对象apiPath = ApiPath() # 实例化对象,获取接口域名getHeaderjson = GetHeaderjson(None) # 实例化对象,获取请求头getCjson = GetcJson(None) # 实例化对象,获取业务系统C的json数据,即接口请求body@allure.title("case1:客户确认场景")def test_customer(self):with allure.step("step1:查询列表"):# 查询列表接口测试res_json = Common.r_post(url=TestCc.apiPath.c_customer_info_page,headers=TestCc.getHeaderjson.get_c_headers(),json=TestCc.getCjson.get_c_customer_info_page())# 断言返回结果Common.assert_tg_code_message(res_json)# 提取返回结果中的ccId字段ccId = res_json['data']['list'][0]['ccId']# 将获取的ccId set到json文件中TestCc.getCjson.set_c_customer_sure_id(ccId)@allure.title("case2:业务场景2")def test_12(self):with allure.step("step1:获取列表"):print("测试获取列表")with allure.step("step2:获取响应结果"):print("测试第二步")

 5、执行excute.py后效果如下

1)allure测试报告

 2)控制台会将详细日志打印出来,因为excute.py的pytest.main是带日志输出,即-s

 3)封装的日志生成的log文件如下

 4)qa1_c.json文件

  因涉及到set接口字段变量,所以运行完后,qa1_c.json文件中的ccId正确展示插入值,后续接口要用到该请求体时,直接用就行,因为ccId已处理成了变量

  以上就是整个框架的搭建和使用啦,后面可能会结合streamlit做成前端页面,到时看自己学的怎么样先,后续再更新博客。

重点:学习资料  

600g的学习资料懂的都懂

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

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

相关文章

【DevPress】V2.4.3版本发布,增加内容收录管理

DevPress V2.4.3版本于2022年11月10日发版,增加内容收录模块,方便用户内容收录。 一、该版本功能包含 1、新需求 1)控制台增加内容收录管理模块,包括收录内容额度管理、自动收录功能、基于内容搜索做收录以及收录内容列表。 - …

[SWPUCTF 2018]SimplePHP

考点&#xff1a;文件上传 试了一下&#xff0c;直接上传php文件是不行的&#xff0c;.user.ini和.htaccess也不行 能看到有提示&#xff0c;flag在f1ag.php中 在查看文件功能处发现get传参&#xff0c;可能是文件包含 尝试包含当前页面 ?filefile.php 得到 <?php h…

测试大老都是怎么理解cookiesession的?

为什么要学习cookie和session呢&#xff1f;若是没有掌握cookie和session的会话机制&#xff0c;就不了解客户端与服务器之间的交互通信原理&#xff0c;也就定位不了产生bug的原因。 cookie与session他们是如何理解的呢&#xff1f; 1、cookie与session区别&#xff1f; co…

STC 51单片机44——实现0.5秒间隔的单向流水灯

// 12MHz晶振 #include "reg52.h" #include "intrins.h" #define time (65536-50000) // 单次定时50ms unsigned char cn; unsigned char temp; void main(void) { cn10; //10*50ms0.5s temp0x7f; TMOD 0x10; //set tim…

springboot+java+vue大学生求职招聘就业岗位匹配推荐系统

目 使用人职匹配推荐系统分为管理员和用户、企业三个权限子模块。 管理员所能使用的功能主要有&#xff1a;首页、个人中心、用户管理、企业管理、岗位信息管理、岗位类型管理、应聘信息管理、应聘状况管理、平台费用管理、系统管理等。 用户可以实现&#xff1b;首页、个人中…

GFS分布式

GFS是什么&#xff1f; 1.1 简单介绍 这个问题说大也大&#xff0c;说小也小。GFS是Google File System的缩写&#xff0c;字面意义上就是Google的文件系统&#xff0c;技术层面上来讲&#xff0c;GFS是Google在2003年前后创建的可扩展分布式文件系统 &#xff0c;用来满足 Goo…

【visual studio】visual studio 2022 无法 复制黏贴

visual studio 2022 cannot copy paste 其他网友也有反馈到微软&#xff1a;VS 2022 Copy and Paste form feature Broken?Copy paste still not fixed in Visual studio 2022表现是突然就无法复制和黏贴了其他的app 就没有这个问题每次都是重启电脑解决。 2022年11月fix 今…

2.1 Redis中SDS的定义

每个sds.h/sdshdr 结构表示一个SDS值 struct sdshdr { //记录 buf 数组中已经使用的字节数量 //等于SDS所保存字符串的长度 int len;//记录buf数组中未使用字节的数量 int free;//字节数组,用于保存字符串 char buf[]; };图2-1 展示了一个SDS 示例: 1、free 属性值为0&#x…

【Spring项目中的Controller理解】

目录 1. 添加依赖 2. 关于异常 1. 添加依赖 首先&#xff0c;需要保障此项目中存在spring-boot-starter-web依赖项&#xff0c;否则&#xff0c;当前项目并不具备Web应用程序开发所需的依赖&#xff01; 提示&#xff1a;spring-boot-starter-web是建立在spring-boot-starte…

APS智能排产系统的优势

APS智能排产系统是通过同步考虑多种有限能力资源的约束&#xff0c;依据各种预设规则&#xff0c;针对解决&#xff1a;客户订单交期评估与答复、人工排产效率低、设备资源利用率低、物料计划与生产计划脱节、生产计划执行率低、库存积压与生产缺料等相关问题&#xff0c;依靠严…

安科瑞智能余压监控系统余压控制器ARPM-C 监控余压值/接收报警信息

1、概述 ARPM-C型余压控制器&#xff0c;可监控所连接余压探测器的余压值&#xff0c;接收余压探测器的报警信息&#xff0c;并向余压监控器反馈现场工作状态&#xff0c;当余压过高报警时联动风阀执行器调节泄压阀&#xff0c;能够持续调节泄压阀的开启角度。 2、产品型号 …

5G无线技术基础自学系列 | MIMO功能

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 无线通信的迅速发展对系统的容量和频谱…

Linux学习笔记(二)

命令 目录中找文件&#xff1a;find压缩tar&#xff1a;tar -cvf xxx.tar 文件解压缩tar&#xff1a;tar -xvf xxx.tar解压缩.gz文件&#xff1a;tar -zxvf xxx.tar.gz压缩.bz2文件&#xff1a;tar -jcvf xxx.tar.bz2解压到指定目录&#xff1a;tar -C 指定目录压缩zip&#xf…

Ensp用windows回环口连接cloud配置

Ensp模拟通过本机&#xff08;windows&#xff09;用python脚本批量配置华为数通设备时&#xff0c;为了避免对内网资源的浪费最好用回环口&#xff08;loopback&#xff09;。 一、windows开启loopback虚拟接口 概要&#xff1a; right click on window start menu icon an…

进阶自动化测试,你一定要知道的...

自动化测试指软件测试的自动化&#xff0c;在预设状态下运行应用程序或系统&#xff0c;预设条件包括正常和异常&#xff0c;最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 自动化测试框架一般可以分为两个层次&#xff0c;上层是管理整个自动化测试的开发&a…

nodejs+vue音乐网站与分享平台

目 录 摘 要 I 1 绪论 1 1.1研究背景 1 1.2研究现状 1 1.3研究内容 2 2 系统关键技术 3 2.1 Spring Boot框架 3 2.2 JAVA技术 3 2.3 MYSQL数据库 4 2.4 B/S结构 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2经济可行性…

SpringBoot+html+vue模板开发

除了对某个表基本的增删改查以外&#xff0c;可能需要额外的增加操作&#xff0c;这里是通过按钮来实现的 1、新增一个测试按钮 <el-button type"primary" class"butT" click"test()">测试</el-button> 2、这个按钮绑定一个方法t…

线代 | 【提神醒脑】自用笔记串联三 —— 相似对角化 · 二次型 · 合同变换

本文总结参考于 kira 2023 线代提神醒脑技巧班。 笔记均为自用整理。加油!ヾ(◍∇◍)ノ゙ 九、相似对角化 9.1、矩阵相似的性质 ----------------------------------------------------------------------------------------------------------…

R语言基于决策树的银行信贷风险预警模型

引言 我国经济高速发展&#xff0c;个人信贷业务也随着快速发展&#xff0c;而个人信贷业务对提高内需&#xff0c;促进消费也有拉动作用。有正必有反&#xff0c;在个人信贷业务规模不断扩大的同时&#xff0c;信贷的违约等风险问题也日益突出&#xff0c;一定程度上制约着我…

运维行业数字化维修数据屏来袭

说起维修数字化&#xff0c;售后维保管理&#xff0c;大家必然想到青鸟云报修&#xff0c;今天我给大家呈现一下青鸟云报修数据大屏是怎么一回事。 这是青鸟云报修第三代数据大屏&#xff0c;在2代基础上增加了更多板块&#xff0c;更加专业和智能化&#xff0c;他主要应用于单…