Python自动化测试实战篇(7),初识pytest做一个简单的接口测试,allure输出可视化测试报告
创始人
2025-05-31 03:56:39
0

在这里插入图片描述
这些是之前的文章,里面有一些基础的知识点在前面由于前面已经有写过,所以这一篇就不再详细对之前的内容进行描述
Python自动化测试实战篇(1)读取xlsx中账户密码,unittest框架实现通过requests接口post登录网站请求,JSON判断登录是否成功

Python自动化测试实战篇(2)unittest实现批量接口测试,并用HTMLTestRunner输出测试报告

Python自动化测试实战篇(3)优化unittest批量自动化接口测试代码,ddt驱动+yaml实现用例调用,输出HTMLTestRunner测试报告
Python自动化测试实战篇(4)selenium+unttest+ddt实现自动化用例测试,模拟用户登陆点击交互测试,Assert捕获断言多种断言
Python自动化测试实战篇(5)优化selenium+unittest+ddt,搞定100条测试用例只执行前50条

Python自动化测试实战篇(7),初识pytest做一个简单的接口测试,allure输出可视化测试报告

  • 1.pytest和unittest区别
  • 2.pytest介绍与安装
  • 3.apifox中mock模拟生成测试接口
  • 4.编写测试脚本
    • pytest的命名规则
  • 5.pytest+request做接口测试
    • 1.request的功能主要分为下面几种
    • 2.headers请求头的相关方法
    • 3.request常用9种请求
    • 4.request.data
  • 5.allure输出可视化测试报告
    • 完整代码
  • 6.关于allure中切换中文的方法
  • 7.通过测试套查看测试用例的情况

在这里插入图片描述

1.pytest和unittest区别

在这里插入图片描述

2.pytest介绍与安装

pytest是一个非常好用的而且成熟的python测试框架

  • 简单上手,灵活方便
  • 支持appium和selenium等自动化测试和接口自动化测试
  • pytest也有很多插件可以使用

pip3 install pytest
pip3 install sugar
pip3 install pytest-rerunfailures
pip3 install pytest-xdist
pip3 install pytest-assume
pip3 install pytest-html
pip3 install request

3.apifox中mock模拟生成测试接口

由于我的postman不知道为什么崩溃掉了,新增了环境变量和修改删除了一些东西以后都还是无法使用,于是我就换成了apifox来模拟接口
在这里插入图片描述

4.编写测试脚本

pytest的命名规则

  • 测试模块名用test_开头或_tsest结尾

  • 测试类必须以test开头或结尾

  • 测试函数必须以test开头或结尾

import pytestclass Test_Pytest():def test_one(self):print("测试方法1执行" )assert 2==2def test_two(self):print("测试方法2执行" )def test_three(self):print("测试方法3方法执行" )
if __name__=="__main__":pytest.main(['testpy.py'])

在这里插入图片描述

5.pytest+request做接口测试

做request接口测试之前我们需要了解

1.request的功能主要分为下面几种

  • 封装了请求头数据
  • 封装了请求正文数据,如果是GET请求没有正文
  • request是一个域对象,可以把它当成MAP来添加获取数据
  • request提供了请求转发和请求包含功能

2.headers请求头的相关方法

  • String getHeader(string name):获取指定名称的请求头
  • Enumeration getHeaderNames():获取所有请求头名称:
  • int getintHeader(String name):获取值为int类型的请求头

3.request常用9种请求

  • Get方法请求一个指定资源的表示形式
  • Post方法用于将实体提交到指定的资源
  • Head方法请求与Get方法类似,但没有请求体
  • Put方法用于请求有效载荷替换目标资源的所有
  • Delete方法删除指定的资源
  • Connect方法建立一个到目标资源标识的服务器隧道
  • Options用于描述目标资源的通信
  • Trace方法沿着到目标资源的路径执行一个消息环回测试
  • Patch方法用于对资源应用部分修改

4.request.data

主要用于请求中的数据部分,如发送一段需要请求的body信息,然后返回数据,如下图所示
在这里插入图片描述

import pytest
import requests
import allureclass Test_Pytest():def test_one(self):url = 'http://127.0.0.1:4523/m1/2459729-0-default/happyshop/login'headers = {'Content-Type': 'application/x-www-form-urlencoded'}data = {'msg': 'admin', 'code': '','result':''}reps = requests.post(url=url, headers=headers, data=data)print(reps.text)assert Truedef test_two(self):url = 'http://127.0.0.1:4523/m1/2459729-0-default/happyshop/login?apifoxResponseId=175999630'headers = {'Content-Type': 'application/x-www-form-urlencoded'}data = {'msg': 'admin', 'code': '', 'result': ''}reps = requests.post(url=url, headers=headers, data=data)print(reps.text)def test_three(self):print("测试方法3方法执行" )assert Falseif __name__=="__main__":pytest.main(['testpy.py','--alluredir', './report/xml'])

5.allure输出可视化测试报告

为allure做准备
在最尾部的时候要打印出report信息才能被allure识别出来

if __name__=="__main__":pytest.main(['testpy.py','--alluredir', './report/xml'])

allure的安装和配置看下面这篇文章
allure安装
安装完成后最后执行这个下面的代码直接生成测试报告

os.system(‘allure serve ./report/xml’)
在这里插入图片描述

完整代码

import osimport pytest
import requests
import allureclass Test_Pytest():def test_one(self):url = 'http://127.0.0.1:4523/m1/2459729-0-default/happyshop/login'headers = {'Content-Type': 'application/x-www-form-urlencoded'}data = {'msg': 'admin', 'code': '','result':''}reps = requests.post(url=url, headers=headers, data=data)print(reps.text)assert Truedef test_two(self):url = 'http://127.0.0.1:4523/m1/2459729-0-default/happyshop/login?apifoxResponseId=175999630'headers = {'Content-Type': 'application/x-www-form-urlencoded'}data = {'msg': 'admin', 'code': '', 'result': ''}reps = requests.post(url=url, headers=headers, data=data)print(reps.text)def test_three(self):print("测试方法3方法执行" )assert Falseif __name__=="__main__":pytest.main(['testpy.py','--alluredir', './report/xml'])os.system('allure serve ./report/xml')

6.关于allure中切换中文的方法

在这里插入图片描述

7.通过测试套查看测试用例的情况

在这里插入图片描述
查看失败的方法,一般来说需要增加断言进行捕获才能清楚认知到具体错误的原因,单从响应返回json来看的话只能看到接口是不是通的情况。
在这里插入图片描述

在这里插入图片描述

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...