python接口自动化测试 ( 第一章 )

2023-11-03

python接口自动化测试 ( 第一章 )

接口自动化测试实战
这是一个从0到1的过程,一步一步搭建的测试接口框架,本教程从开始写框架的思路,和实现过程深入解析,并且深入到了每个相关的的各个细节,不论你是刚入门的菜鸟,还是一个懂编码经验的工程师,相信本系列的文章都会对你有所帮助。
你即可以学到从0到1搭建自动化的编码思想,也可以改变成一个接口自动化工具,在需要的时候可以自己更改代码和维护。
你可以收获什么?
1.完善python基础和编程思
2.有一个设计测试框架思维
3.提升自己能力,在也不怕面试没有编码经验
4.一个可以拿出手的项目,简历中的一个亮点
5.干货分享相比搜索到各种知识,这篇文章或许略有难度,但收获一定是你想不到的
我们的设计思想如下:
语言:python3.7
请求:requests
测试报告:allure测试报告和Excel测试报告并邮件发送测试报告
维护:只需要维护Excel表格,表格执行pythoon代码
兼容性:向后兼容性强,可以在接口自动化完善的基础上增加 web ui app ui 自动化测试
框架支持如下功能:
支持成千上万条接口用例进行测试(经过测试中配电脑,3分钟执行完成5000条接口测试)
详细的Excel测试报告和美观的allure报告输出(这里能让你掌握自定义allure报告)
支持不同类型上传文件(base64,file)上传文件格式
本框架采用多线程和单例等设计模式,代码简单而简约适合初中级学者,使用学习
摆脱普通的测试框架和断言框架的约束,他们能做到的我们一样也可以,学习简单~
接口自动化基础篇:
详细的带你从0基础了解接口测试,十个案例动手跟着做一做!

接口测试基础篇(史上最详细):https://blog.csdn.net/weixin_45344334/article/details/94433426
接口自动化篇:
接口自动化第二章之-封装读取excel工具类
接口自动化第三章之-读取elemen表格数据
接口自动化第四章之-读取用例表格数据
接口自动化第五章之-封装requests请求增加log日志类
接口自动化第六章之-返回结果和预期结果进行格式对比
接口自动化第七章之-完善框架结构,增加allure测试报告
接口自动化第八章之-进行jenkins持续集成
接下来详细介绍工具的如何使用!!!
1.分两个Excel来控制脚本,第一个我们取名为elements.xlsx,第二个取名testcase.xlsx
element.xlsx主要是管理接口的ip和链接,方便后面增加ui自动化存放元素:

elements.xlsx
key:代表的接口名字(不能重复的哦,唯一表示名字)
type:接口的请求类型(如post,get等等)
value:是接口的链接(是接口后面的链接哦,如/webapi这种)
testcase.xlsx主要用于管理测试步骤和测试数据等:
testcase的表格设计如下:

 testcase.xlsx

testcase.xlsx 

 

下面介绍用例表的写法~~~
用例编号:用例表示这条用例的id
用例标题:这条用例是做什么的
前置条件:写skip即可跳过这个用例
测试功能点:见名知意,要测试的什么功能
测试步骤:按照顺序进行排列,依次写入步骤即可(不会根据步骤进行测试,根据写的用例顺序)
操作:进行接口测试 还是其他操作 目前只需要写API即可(后面支持ui等操作)
测试测试支持等待时间和选择上传文件的格式等:
1.格式为json格式,如果需要传入的参数是header,咱们就可以这么写:headers={‘key’:‘value’},如果是body等参数就写:parmars={‘phone’: ‘’, ‘type’: ‘1’}

2.参数支持调用python代码,parmars={‘phone’: ‘<b.create_phone()>’, ‘type’: ‘1’}代码执行后会变成parmars={‘phone’: ‘155502226XXX’, ‘type’: ‘1’}生成手机号哦

预期结果:写入你要测试的接口的返回内容,后面跟#号是要进行断言的内容会查看返回的接口里面有没有
-3.如果有一条接口执行完成之后,等待的时间怎么写呢?只需要在测试数据最后跟上#等待时间=1,秒数计算的哦,=1就是等待1秒
-4.有的同学我要是上传文件怎么办,目前支持base64,file等,只需要将文件放到项目file的目录下,然后在用例中这样写:files={‘swt’:‘file’,‘phone’:‘web.jpg’, ‘type’: ‘1’},swt是必须要填写的哦,看你要传的文件格式,如果是base64,就写入base64就好了。
截图~

 

预期结果:写入你要测试的接口的返回内容,后面跟#号是要进行断言的内容会查看返回的接口里面有没有写法:#(‘这是我开发的第一个接口’,‘1’)
设计者:见名知意
步骤结果:会在测试报告里面体现
备注:可以备注接口的一些信息等
接下来咱们请求一下看一下测试报告等信息
两条接口测试通过的,测试完毕后,会将测试报告通过邮件的方式,发送到邮箱,下期会进行讲解如何使用,代码会在后续进行讲解和贴出
allur报告,这里只展示了正常情况~错误情况自己去探索哦:

 

 

 

 

Excel报告如下:


接下来贴出代码结构:

 

 

 

 

 


config:文件内是存储一些常量,比如存入接口的token唯一标识码等,存入代码生成的手机号,方便接口接下来的使用等
element:里面存放的是接口的相关配置第一个Excel
junit:生成xml报告,用于allure测试报告展示的数据
control:
autotest.py:初始化数据,解析Excel数据,记录请求过程,生成测试报告
data.py:进行Excel读取的数据,进行重组,得到到可以执行的json结构
httpcaps.py:封装请求,记录用例结果,将结果返回至autotest.py
junit.py:生成xml测试报告用于展示allure
log.py:日志类,将输出的日志写到下面的log文件夹内
testcase.py:执行测试用例
utlis.py:工具类,封装常用的函数
lib:里面存储的是自定义方法,可以在Excel调用函数
log:输出log文件,记录log产生的日志
report:输出excel测试报告
testcase:用例文件
httpstart:调用执行用例,是否生成报告和发送邮件等
如果你想直接获得源码可以加qq群,来一起学习进步。

接口自动化第二章,开始继续学习吧~
源码下载地址复制地址打开,不然会没有权限:https://gitee.com/zhangmeng1314/seautotet-public.git
————————————————

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python接口自动化测试 ( 第一章 ) 的相关文章

  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • Python:在列表理解本身中引用列表理解?

    这个想法刚刚出现在我的脑海中 假设您出于某种原因想要通过 Python 中的列表理解来获取列表的唯一元素 i if i in created comprehension else 0 for i in 1 2 1 2 3 1 2 0 0 3
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class

随机推荐

  • nacos登录 提示权限认证失败 没有命名空间的访问权限

    前言 环境 centos7 9 nacos 2 2 2 问题描述 最近在部署nacos 2 2 2版本的时候 这是目前2023年4月份最新版本 发现按照start out日志给出的登录地址 http 192 168 158 128 8848
  • TensorFlow.js 和 Node-RED 图像识别应用程序

    在本文中 我们将看看您可以将这两种流行的开源软件工具组合起来做什么 使用 Node RED 创建示例图像识别流程 我们的目标是在 Node RED 中创建一个流来识别图像中的对象 如下面的屏幕截图所示 使用黄色节点组件从浏览器上传文件后 可
  • 【韧性设计模式】韧性设计模式:重试、回退、超时、断路器

    什么是韧性 软件本身并不是目的 它支持您的业务流程并使客户满意 如果软件没有在生产中运行 它就无法产生价值 然而 生产性软件也必须是正确的 可靠的和可用的 当谈到软件设计中的弹性时 主要目标是构建健壮的组件 这些组件既可以容忍其范围内的故障
  • IOS App 的图标和启动图的烦恼

    前言 好多iOS App的开发者都会面临的一个问题 那就是 App 的图标 icon 和启动图 launch images 一些没有经验 指的是没做过App审计的 的UI设计师 不知道该怎么做 他就会问开发者 这个时候就是你展示的时候 其实
  • git format-patch命令介绍

    git format patch的使用 1 在dev1分支上 打出所有dev1分支在master分支基础上的patch git format patch master 结果为d1c1 patch d1c2 patch 2 在dev1分支上
  • Win10 修改JAVAHOME环境变量无效,默认java -version未改变

    Win10 修改JAVAHOME环境变量无效 默认java version不变问题 1 造成该原因的三个路径 环境变量 2 解决方法 1 造成该原因的三个路径 环境变量 1 C Program Files x86 Common Files
  • 使用R读取并查看数据

    本篇文章介绍如何使用R读取并查看数据 包含一些最基础的函数使用方法和说明 后面还会陆续介绍数据清洗 匹配和提取等相关的操作 查看函数帮助 对于新手来说 在使用R时最重要的是了解不同函数的使用方法 很多时候我们都是边用边学的状态 拿到一个函数
  • CRM部署以流程为核心

    大多数国内企业还不太习惯流程 尤其是精细化管理的流程 如果有流程 也可能是粗放型的流程 因为我们还是更注重结果 不太习惯过程管理 我们还是更注重每个人干什么 而不太习惯整体协同 在这样的基础上 大部分企业在部署CRM的时候 就或左或右的进入
  • GitHub Copilot收费了

    今天一早收到邮件看到提示收费的邮件 才想起来还有个这个插件 废话少说直接链接 https github com features copilot 个人看法 功能 首先功能确实是比一般的代码提示强不少 但要做到 我 hello GitHub
  • vue-cli项目中静态文件过大的问题

    我们最近在做一个项目时 因为static 文件中含有几个视频文件 导致static 文件过大 build 的时候非常慢 在这我大概介绍一下上面问题的解决方法 首先我们先要了解一下 webpack 的一个插件 拷贝插件 copy webpac
  • Linux系统安装VMware Tools和同W7共享文件遇到的问题

    我用的系统为CentOS6 5 minimal版本 minimal版本默认不启动网络 所以要自己配置 vi etc sysconfig network script ifcfg eth0 1 NM CONTROLLED no 修改为no不依
  • C# Task Cancellation总结

    1 调用cancellationTokenSource Cancel 时 只有在task的函数体内使用token ThrowIfCancellationRequested 方法时才会触发ContinueWith Action
  • Java jdk1.5 新特性讲解

    JDK1 5 可以说是java 最经典的一个版本了 在 jdk1 5 发布时 就因他的改动大 而命令为jdl5 0 为后来 java 的壮大立下了汗马之劳 有网友在面试的时候被问到 jdk新特性 我这里索性就从 jdk1 5的特性说到1 8
  • Android产品研发(十四)-->App升级与更新

    转载请标明出处 一片枫叶的专栏 上一篇文章中我们讲解了Android app中的轮询操作 讲解的内容主要包括 我们在App中使用轮询操作的情景 作用以及实现方式等 一般而言我们使用轮询操作都是通过定时任务的形式请求服务器并更新用户界面 轮询
  • 《2020王道》

    绪论 数据结构基本概念 数据 数据是信息的载体 是描述客观事物属性的数 字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合 数据元素 数据元素是数据的基本单位 通常作为一个整体进行考虑和处理 一个数据元素可有若干个数据项组成
  • 项目中的外包团队如何管理

    在复杂的项目工作中 对外采购产品 服务变得越来越普遍 这种基于合同的跨组织合作方式 确实给项目的管理工作带来了更大的挑战 项目经理在管理好自己团队的同时 应该怎样做好针对外包团队的监督与控制工作呢 01 工作外包不等于甩包袱 首先需要明确的
  • QLabel中设置背景图片的4种方法

    1 图片不重复 可设置缩放比例 不可动态缩放 find package Qt QT VERSION MAJOR COMPONENTS Svg REQUIRED Qt QT VERSION MAJOR Svg include
  • 18、计算机图形学——BRDF与渲染方程

    一 BRDF Bidirectional Reflectance Distribution Function 双向反射分布函数 基于https blog csdn net Master Cui article details 1197877
  • 文件上传漏洞攻击与防范方法

    01 文件上传漏洞简介 文件上传漏洞是web安全中经常用到的一种漏洞形式 是对数据与代码分离原则的一种攻击 上传漏洞顾名思义 就是攻击者上传了一个可执行文件如木马 病毒 恶意脚本 WebShell等到服务器执行 并最终获得网站控制权限的高危
  • python接口自动化测试 ( 第一章 )

    python接口自动化测试 第一章 接口自动化测试实战 这是一个从0到1的过程 一步一步搭建的测试接口框架 本教程从开始写框架的思路 和实现过程深入解析 并且深入到了每个相关的的各个细节 不论你是刚入门的菜鸟 还是一个懂编码经验的工程师 相