Python接口测试框架选择之pytest+yaml+Allure!

一、为什么选择pytest?
pytest完全兼容python自带的unittest

pytest让单元测试更简单,能很好的管理测试用例。

对于实现接口测试的复杂场景,pytest的fixture、PDB等高阶用法都能实现需求。

入门简单,对于代码基础薄弱的团队人员,也可以用pytest实现较简单的单个接口测试。

社区活跃,遇到问题可以在网上找到解决方法。

pytest实战例子:修改用户信息
场景:测试修改用户昵称是否成功

涉及接口:用户登录接口、用户信息修改接口、用户信息接口。用户信息修改接口和用户信息接口需要上传登录接口下发的token字段

接口处理逻辑分析:

用户登录后拿到token,将token设为全局变量。

上传修改后的用户昵称到用户修改接口

请求用户信息接口,拿到昵称字段,判断是否为修改后的的昵称。

代码展示

import pytest
updata_name = "sunny"
expect_result = updata_name #期待修改后的昵称
class TestUpdataUserInfo:
def setup_class(self):
print("请求登录接口,获取到token")
self.token = "token" #将token设为全局变量,这里暂时用"token"代替接口返回的tokendef teardown_class(self):
# 此方法写请求获取用户信息接口,拿到用户昵称逻辑代码
tokenStr = self.token # 获取到token,用于请求修改用户信息接口
print("请求用户信息接口,拿到昵称")
nickName = "sunny"#假设接口拿到的昵称为"sunny"
assert nickName==expect_result #校验是否为期待的昵称def test_update_userInfo(self):
#此方法写上传修改后的用户昵称到用户修改接口的逻辑
tokenStr = self.token #获取到token,用于请求修改用户信息接口
print("token:"+tokenStr)
print("上传需要修改的昵称")
if __name__ == '__main__':
pytest.main(['-s', 'pytest-demo.py'])
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:822269834【暗号:csdn999】

二、为什么选择yaml?
写法简洁易懂,视觉上也很舒适

yaml支持python,yaml+pytest实现数据分离很简便。

配置有序,支持数组写法,数组中的元素可以是基本数据类型也可以是对象

实战例子:用yaml写测试数据
上文的pytest例子中,测试上传的昵称数据和期待修改后的昵称数据都是写在updataUserInfo.py文件,这种写法不方法管理,现在改为用yaml文件写测试数据。

代码展示

创建yaml文件:updataUserInfo.yaml,将测试数据写入
test:
name: test case1
updateName: "sunny"
result:
expectName: "sunny"

获取到yaml数据如下

{'test': {'name': 'test case1', 'updateName': 'sunny', 'result': {'expectName': 'sunny'}}}

获取到yaml文件里的数据,进行请求和校验

import pytest
import yaml# updata_name = "sunny"
# expect_result = updata_name #期待修改后的昵称
class TestUpdataUserInfo(object):def setup_class(self):
##获取yaml文件里面的数据,
with open("./updataUserInfo.yaml", 'r') as f:
content = yaml.safe_load(f)
print(content)
self.update_name = content['test']['updateName']
self.expect_name = content['test']['result']['expectName']print("请求登录接口,获取到token")
self.token = "token" #将token设为全局变量,这里暂时用"token"代替接口返回的tokendef teardown_class(self):
# 此方法写请求获取用户信息接口,拿到用户昵称逻辑代码
tokenStr = self.token # 获取到token,用于请求修改用户信息接口
print("请求用户信息接口,拿到昵称")
nickName = "sunny"#假设接口拿到的昵称为"sunny"
assert nickName==self.expect_name #校验是否为期待的昵称def test_update_userInfo(self):
#此方法写上传修改后的用户昵称到用户修改接口的逻辑
tokenStr = self.token #获取到token,用于请求修改用户信息接口
print("token:"+tokenStr)
print("需要修改的值为:"+self.update_name)
print("上传需要修改的昵称")if __name__ == '__main__':
pytest.main(['-s', 'pytest-demo.py'])

三、为什么选择Allure?

生成高大上的测试报告,展示测试结果直观明了,利于向领导展示自动化测试成果。

有失败用例截图、测试步骤和测试说明信息。方便测试人员查看测试结果。

Allure测试报告展示

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

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

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

相关文章

Mysql - 常用插入数据的三种方法详解及练习

目录 🥙8.1.1 mysql中常用的三种插入数据的语句 1. insert into - 插入数据 2. replace into - 插入替换数据 3. insert ignore - 如果已存在,忽略当前新数据 🥙8.1.2 以上三种方法的练习及区分 🥙8.1.3 说明 &#x1f959…

高项备考葵花宝典-项目进度管理核心方法加强理解-关键路径法

关键路径法(Critical Path Method,CPM)是一种基于数学计算的项目计划管理方法,是网络图计划方法的一种,属于肯定型的网络图。关键路径法将项目分解成为多个独立的活动并确定每个活动的工期,然后用逻辑关系&…

YOLOv8-Seg改进:UniRepLKNetBlock 助力分割 | UniRepLKNet,通用感知大内核卷积网络, 2023.12

🚀🚀🚀本文改进: UniRepLKNet,通用感知大内核卷积网络,ImageNet-22K预训练,精度 和速度SOTA,ImageNet达到88%, COCO达到56.4 box AP,ADE20K达到55.6 mIoU UniRepLKNetBlock 与C2f进行结合使用 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带…

关于set和map的简单理解

1. 关于搜索 1.1 set和map的引入 Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。以前常见的搜索方式有: 1. 直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢 2. 二分查找&…

设计模式详解---抽象工厂模式

继续前言,工厂模式中抽象工厂模式的讲解: 1. 前面的工厂模式有啥问题? 前面的工厂模式有这么个问题:一个产品就给了一个工厂,这样子如果产品变多,系统就会很复杂: 2. 解决方法 我们可以按照手…

DSP280049C初学(4)-FLASH烧录以及部分程序转移至RAM运行

DSP280049C初学(4)-FLASH烧录以及部分程序转移至RAM运行 实现目的:代码在RAM中调试完成后,就需要将其固化下载到FLASH中,但是FLASH中运行所有程序的话会存在计算或程序运行时间过长的问题,故还需要将部分代…

Sublime Text 3 解决中文乱码问题

Sublime Text 3 解决中文乱码问题 一、引言二、主要内容1. 初识 ConvertToUTF8 插件2. 安装 ConvertToUTF8 插件3. 中文乱码问题解决 三、总结 一、引言 在 《Sublime Text 3配置C/C开发环境》 博文中,Huazie 带大家利用 Sublime Text 3 配置了 C/C 开发环境&#…

手把手教你使用zabbix5.0设置企业微信告警

一、环境要求 需要准备2台虚拟机,镜像是centos7,保证2台虚拟机之间可以正常通信,并且可以正常连接外网。 systemctl stop firewalld && systemctl disable firewalld setenforce 0 && sed -i ‘/SELINUX/s/enforcing/disable…

【infiniband】安装驱动

安装 InfiniBand 驱动包通常包括几个步骤,但是可能会有所不同,取决于使用的操作系统和具体的硬件。以下是在 Linux 系统上安装 InfiniBand 驱动的通用步骤: 1.检查硬件和操作系统兼容性 确保服务器硬件支持 InfiniBand,并查看驱动…

详解Maven如何打包SpringBoot工程

目录 一、spring-boot-maven-plugin详解 1、添加spring-boot-maven-plugin插件到pom.xml 2、配置主类(Main Class) 3、配置打包的JAR文件名 4、包含或排除特定的资源文件 5、指定额外的依赖项 6、配置运行参数 7、自定义插件执行阶段 二、Maven打…

LeetCode Hot100 23.合并K个升序链表

题目: 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 方法:分治,类似于归并 class Solution {public ListNode mergeKLists(ListNode[] lists) {return mer…

canvas中实现画布内元素的拖拽(下)

在上篇实现基础上,实现仅能在画布区域内移动 const canvas document.createElement(canvas) canvas.width 400 canvas.height 400 canvas.id canvas document.body.appendChild(canvas) let ctx canvas.getContext(2d) //画笔// 状态标志 const statusConfig …

arp欺骗原理以及实现方式

我们知道了arp的作用,那么此时我们怎么可以用他来进行攻击呢?在一个局域网中,我们怎么实现呢? 原理: 这样B就可以做到中间人了,可以接受到两个主机的数据了。换句话来说,在同一个局域网内&…

C/C++ 有效的括号判断

题目: 给定一个只包括 (,),{,},[,]的字符串s,判断字符串是否有效。 约束: 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。…

【六】python观察者设计模式

6.1行为型模式简介 观察者设计模式是最简单的行为型模式之一,所以我们先简单了解一下行为型模式 创建型模式的工作原理是基于对象的创建机制的。由于这些模式隔离了对象的创建细 节,所以使得代码能够与要创建的对象的类型相互独立。结构型模式用于设计对象和类的结…

Python GUI教程:轻松构建用户界面

大家好,从网络开发到数据科学,Python被广泛应用于各个领域。本文将探索Python内置的用于创建图形用户界面(GUI)的库:Tkinter。无论是初学者还是经验丰富的开发者,了解如何创建Python GUI都可以增强构建交互…

Makefile基本指令

语法规则 目标 ... : 依赖 ...命令1命令2. . .1、目标即要生成的文件。如果目标文件的更新时间晚于依赖文件更新时间,则说明依赖文件没有改动,目标文件不需要重新编译。否则会进行重新编译并更新目标文件。 2、默认情况下Makefile的第一个目标为终极目…

系统接口未找到报404异常统一返回处理

上篇博客:异常处理返回结构体,做到全局统一,仍然会出现一些情况。 针对未找到接口爆出404异常,返回结构体如果没有处理的话会变成下面这样,不会走全局异常处理,这样的话就没有完全做到全局异常统一处理。 …

es模板和索引简单操作简介

一、模板 1、创建模板 (1)请求url http://127.0.0.1:9201/_template/template_test (2)请求方式 PUT (3)请求体 { "index_patterns": ["test*"], "settings": { …

并发相关参数指标

指标 1、TPS和QPS 一、TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS CAPS 每个呼叫平均TPS&…