首页 > 编程语言 >基于pytest搭建接口自动化测试框架,提供源码

基于pytest搭建接口自动化测试框架,提供源码

时间:2024-01-22 11:56:38浏览次数:45  
标签:allure waybill pytest 接口 源码 参数 使用

 

基于pytest搭建接口自动化测试框架

 

框架整体介绍和方法教程

第三代框架使用教程,该框架比第二代这个完善了很多

https://blog.csdn.net/aaaaaaaaanjjj/article/details/129597973

新框架(第二代比这个功能多了很多,用例使用yaml编写)

pytest+yaml设计接口自动化框架过程记录(一步一步记录如何设计),源码提供

源码框架结构

在这里插入图片描述

xmind项目结构介绍

在这里插入图片描述

源码地址

喜欢打个星啊,感谢
gitee :https://gitee.com/your_dad_died/bm_pytest_api
github: https://github.com/Theshy0000/bm_pytest_api

使用教程

1.全局变量设置和使用

知识点:使用conftest配合@pytest.fixture()使用在用例所在的文件中不需要导入可以直接使用
在这里插入图片描述
在这里插入图片描述

2.参数配置

其他文件通过导入进行读取
在这里插入图片描述

3.接口参数依赖关联

参数提取:

调用parameter.update_rv()方法设置参数提取 方法源码自选观看
result 为接口返回的完整响应主体内容,通过字典键值提取值,给与这个值赋值给waybillNo这个变量,后续通过waybillNo可以使用这个提取的值。类似于jmeter的提取器
在这里插入图片描述

参数使用

upstream_create_waybill_data 这个是接口原始参数,我存放在data文件下
replace_expression 这个为依赖表达式,我直接用变量写的,也可以写在yaml文件下,自己扩展
rv 之前提取的参数所储存的字典
在这里插入图片描述
在这里插入图片描述

处理参数依赖代码截图

知识点: 我标记的地方先使用了集合去重的特性,最后用列表返回
在这里插入图片描述

4.使用效果

注意:在上面的原数据截图中 “waybillNo”:“Y22011101026000006”,经过替换变了。原始数据的’id’:1111也被替换
在这里插入图片描述
在这里插入图片描述

5.日志使用

源码

颜色文件存储位置,储存文件日志级别日志名称等
在这里插入图片描述

使用

from tool.log import logger
logger.info()等,上面都有打印到控制台的截图
在这里插入图片描述

6.requests二次简单封装

源码

直接写了get和post的2种方法,现在常用的就这2个,大部分都是post,提前把ip,headers信息提前封装,针对公司业务封装上下游企业
在这里插入图片描述

使用
 post方式: result = requests.post('/waybill/createWaybill', upstream_create_waybill_data).json()
 get方式:  result = requests.get('/waybill/generateWaybillNo').json()
 
  • 1
  • 2

7.yaml_.py教程

源码:

实现读和写,判断文件不存在则新建后读写
在这里插入图片描述

写使用

我这里使用了’a’ 操作文件,追加
在这里插入图片描述

写的效果

在这里插入图片描述

读使用

在这里插入图片描述

8.mysql_.py教程

源码

self.cur = self.db.cursor(cursor=pymysql.cursors.DictCursor) 设置以字典的格式返回查询数据
先创建数据库连接,在进行非查询操作时操作完sql语句后需要提交self.db.commit(),如果发生错误就进行回滚self.db.rollback()
在这里插入图片描述

使用

知识点 f’{}’ 这是python新语法,等同于format()
在这里插入图片描述

9.pytest.ini配置使用

(之前这些和pytest好像没啥关系啊,都自己写的方法)
更改默认运行pytest命令 其他参数百度
addopts = -vs --alluredir ./report/allure_raw --durations=0 
--alluredir ./report/allure_raw  设置报告原始数据的目录
设置运行用例目录
testpaths = case 
设置标签,可以根据标签来运行指定用例
markers =
  waybill : run waybill case  -m waybill
  bill :run bill case  -m bill
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

10.运行文件

import pytest
import os
import shutil
if __name__ == '__main__':
    try:
        # 删除之前的文件夹
        shutil.rmtree("report/allure_raw")
    except:
        print('之前未生成报告原文件')
    pytest.main([])
    #编译报告原文件并启动报告服务
    os.system('allure serve report/allure_raw')
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

11.参数自动化使用

在这里插入图片描述

12.allure报告

在这里插入图片描述

   

标签:allure,waybill,pytest,接口,源码,参数,使用
From: https://www.cnblogs.com/atu168/p/17979746

相关文章

  • 接口自动化测试实践指导(中):接口测试场景有哪些
    接口自动化测试实践指导(中):接口测试场景有哪些1接口测试场景梳理1.1设计思路在接口测试中,很大程度上,我们的测试质量依赖于接口测试场景的设计,而接口的测试场景和传统的功能测试场景又有所不同,不少测试同学一时无法很好的转换,一上来进行接口测试思路上会比较乱,这里呢给大家梳......
  • 抽象类与接口
    一.抽象类与接口的定义1.抽象类:如果一个类中有被abstract修饰的方法,那么该类也要被abstract修饰,并且抽象类的抽象方法需要子类继承抽象类通过重写抽象方法实现,那么该类就是抽象类。2.接口:接口是抽象方法的集合,接口中只有抽象方法,被interface修饰。二.抽象类与接口的特......
  • Java并发基础:Executor接口和Executors类的区别
    Executor是Java中的一个接口,它定义了一种将任务提交与任务执行机制(包括线程管理、调度等)分离的方式,Executors是一个工具类,它提供了多个静态工厂方法,用于创建不同类型的Executor实例。代码案例下面展示了如何使用Executor接口来执行异步任务,如下代码案例:importjava.util.conc......
  • Micro 接口运行流程
    1.程序运行2初始化接口清单(TSysInterMst)3.静态函数(GlobalManager)-----------------------------------1.控制器(Run)2.账号/密码/接口名/参数(Body),使用zip压缩传参3.验证账号/密码4.验证接口名/参数5.执行接口(接口名、参数)6.默认函数(ImportJson)6.1.取字段映射(TSysInterMst、TSysInter......
  • [转帖]MySQL多版本并发控制机制(MVCC)-源码浅析
    https://zhuanlan.zhihu.com/p/144682180 MySQL多版本并发控制机制(MVCC)-源码浅析前言作为一个数据库爱好者,自己动手写过简单的SQL解析器以及存储引擎,但感觉还是不够过瘾。<<事务处理-概念与技术>>诚然讲的非常透彻,但只能提纲挈领,不能让你玩转某个真正的数据库。感谢c......
  • OSPF认证(区域认证、接口认证)
     作者:兔砸网工-阿毛1.OSPF认证概述    OSPF认证分为区域认证与接口认证,当使用区域认证方式时,一个区域中所有的路由器在该区域下的认证模式和密码必须一致,不一致则无法建立OSPF邻居关系;当使用接口认证方式时,相邻的路由器之间需要设置同样认证模式和密码,不一致则无法建立OSPF邻......
  • Intel Arrow Lake处理器还是8+16 24核心:接口换LGA1851
    Intel已经确认,将在今年内发布未来两代处理器ArrowLake、LunarLake,其中前者将弥补MeteorLake的不足,同时用于笔记本、桌面、服务器,现在它的核心规格流出了。这份曝光的材料再次证实,MeteorLake原本确实规划了桌面版,只是因为性能不达标而取消,ArrowLake则早就内部排序好了叫做15......
  • Go语言核心36讲 41 | io包中的接口和工具 (下)
    上一篇文章中,我主要讲到了io.Reader的扩展接口和实现类型。当然,io代码包中的核心接口不止io.Reader一个。我们基于它引出的一条主线,只是io包类型体系中的一部分。我们很有必要再从另一个角度去探索一下,以求对io包有更加全面的了解。下面的一个问题就与此有关。知识扩展问题:i......
  • Go语言核心36讲 40 | io包中的接口和工具 (上)
    我们在前几篇文章中,主要讨论了strings.Builder、strings.Reader和bytes.Buffer这三个数据类型。知识回顾还记得吗?当时我还问过你“它们都实现了哪些接口”。在我们继续讲解io包中的接口和工具之前,我先来解答一下这个问题。strings.Builder类型主要用于构建字符串,它的指针类型......
  • macOS 查看网络接口信息
    networksetup-listallhardwareports执行结果:HardwarePort:EthernetAdapter(en4)Device:en4EthernetAddress:6a:d9:f9:5e:a8:e6HardwarePort:EthernetAdapter(en5)Device:en5EthernetAddress:6a:d9:f9:5e:a8:e7HardwarePort:EthernetAdapter(en6)D......