数据驱动测试、结果报告生成,Python接口自动化测试全方位解析

news2024/12/27 16:43:06


B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠icon-default.png?t=N3I4https://www.bilibili.com/video/BV1ua4y1V7Db

 目录

一、背景

二、准备工作

三、编写测试脚本

四、数据驱动测试

五、结果报告生成

六、总结

七、参考链接


 

一、背景

随着Web应用程序的快速发展,越来越多的应用程序需要与API进行交互。而为了保证API的质量和稳定性,接口自动化测试变得非常重要。本文将介绍如何使用Python进行接口自动化测试,以及如何使用一些流行的Python库进行数据驱动测试和结果报告生成。

二、准备工作

在开始编写测试脚本之前,我们需要安装一些必要的工具和库:

  1. Python 2.7 或以上版本

  2. requests 库:用于发送HTTP请求并处理响应。

  3. unittest 库:用于编写和运行测试用例。

  4. HTMLTestRunner 库:用于生成HTML格式的测试结果报告。

您可以使用pip命令在终端中安装这些库:

pip install requests
pip install unittest
pip install html-testRunner

三、编写测试脚本

以下是一个使用requests库编写的简单的接口测试脚本,它会向GitHub API发送一个GET请求,并检查响应是否正常:

import requests
import unittest

class TestGitHubAPI(unittest.TestCase):

    def test_get_user(self):
        response = requests.get('https://api.github.com/users/octocat')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json()['login'], 'octocat')

if __name__ == '__main__':
    unittest.main()

在上面的代码中,我们定义了一个名为TestGitHubAPI的测试类,并编写了一个名为test_get_user的测试方法。该方法使用requests库发送一个GET请求,并检查响应状态码和返回的JSON数据是否符合预期。

四、数据驱动测试

如果您需要对多个测试用例进行测试,那么手动编写每个用例会变得非常繁琐。在这种情况下,您可以使用数据驱动测试来轻松管理测试用例。

以下是一个使用unittest框架和数据驱动测试的示例:

import requests
import unittest
from parameterized import parameterized

class TestGitHubAPI(unittest.TestCase):

    @parameterized.expand([
        ("octocat", 200),
        ("nonexistentuser123", 404)
    ])
    def test_get_user(self, username, status_code):
        response = requests.get('https://api.github.com/users/{}'.format(username))
        self.assertEqual(response.status_code, status_code)

if __name__ == '__main__':
    unittest.main()

在上面的代码中,我们使用parameterized库将测试数据从测试逻辑中分离出来。我们使用@parameterized.expand装饰器来指定测试用例数据,并将它们传递给测试方法。这样,我们就可以更容易地添加或删除测试用例,而无需修改测试逻辑。

五、结果报告生成

最后,我们可以使用HTMLTestRunner库生成漂亮的测试结果报告。以下是一个示例代码:

import requests
import unittest
import HTMLTestRunner

class TestGitHubAPI(unittest.TestCase):

    @parameterized.expand([
        ("octocat", 200),
        ("nonexistentuser123", 404)
    ])
    def test_get_user(self, username, status_code):
        response = requests.get('https://api.github.com/users/{}'.format(username))
        self.assertEqual(response.status_code, status_code)

if __name__ == '__main__':
    unittest.main(testRunner=HTMLTestRunner.HTMLTestRunner(output='test-reports'))

在上面的代码中,我们使用HTMLTestRunner库来生成测试结果报告。我们将unittest.main()函数的testRunner参数设置为HTMLTestRunner,并指定报告的输出目录。

六、总结

本文介绍了如何使用Python进行接口自动化测试。我们使用requests库发送HTTP请求并处理响应,使用unittest库编写和运行测试用例,使用parameterized库进行数据驱动测试,同时使用HTMLTestRunner库生成测试结果报告。通过这些工具和库的组合,我们可以轻松地编写、运行和管理接口自动化测试,从而提高应用程序的质量和稳定性。

七、参考链接

  1. requests官方文档:Requests: HTTP for Humans™ — Requests 2.29.0 documentation
  2. unittest官方文档:unittest — Unit testing framework — Python 3.11.3 documentation
  3. parameterized库GitHub仓库:GitHub - wolever/parameterized: Parameterized testing with any Python test framework
  4. HTMLTestRunner库GitHub仓库:GitHub - oldani/HtmlTestRunner: A Test Runner in python, for Human Readable HTML Reports

 自动化测试学习步骤结构图:

 

自动化测试福利:

【测试交流群号】:574737577icon-default.png?t=N3I4http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=mQ7BUegSKrQqXAznDodcBM2ejt9jh22V&authKey=pKW6wUN%2FVg35%2BqaxnE7NJ3I8H8UhaT%2FNBdK1YzcsNGQ3gXBdHrFFNOw2CSsXMREb&noverify=0&group_code=574737577

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

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

相关文章

线性表,顺序表,链表

线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列 线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线 …

阿里云对象存储OSS使用 HTTPS访问

阿里云对象存储OSS使用 HTTPS ​ 在部署项目的时候遇到了一个问题,就是https页面访问http资源报错的问题。 问题: 写了一个前端项目在云服务器部署,我的域名申请了ssl证书并在云服务器nginx部署,所以页面是https页面,但…

Ansible的脚本-playbook 剧本

目录 1.剧本(playbook) 1.playbook介绍 2. playbooks 的组成 3.案例:编写httpd的playbook 4.定义、引用变量 5.指定远程主机sudo切换用户 6.when条件判断 7.迭代 2.playbook的模块 1.Templates 模块 2.tags 模块 3.Roles 模块 1.…

TCP协议——这篇文章GET全

TCP协议文章目录 1. UDP和TCP协议的比较1.1 UDP协议1.2 TCP协议1.3 特点比较 2. TCP协议建立连接的三次握手3. TCP协议断开连接的四次挥手4. TCP协议的几个特性4.1 确认应答4.2 超时重传4.3 连接管理4.4 滑动窗口4.5 流量控制4.6 拥塞控制 1. UDP和TCP协议的比较 UDP和TCP作为…

多维时序 | MATLAB实现BP神经网络多变量时间序列预测(考虑历史特征的影响,多指标、多图输出)

多维时序 | MATLAB实现BP神经网络多变量时间序列预测(考虑历史特征的影响,多指标、多图输出) 目录 多维时序 | MATLAB实现BP神经网络多变量时间序列预测(考虑历史特征的影响,多指标、多图输出)预测效果基本介绍程序设计学习总结参考资料预测效果 基本介绍 MATLAB实现BP神经网…

Java中的Reflection(反射)、暴力反射

文章目录 1. 反射(Reflection)的概念1.1 反射的出现背景1.2 反射概述1.3 Java反射机制研究及应用1.4 反射相关的主要API1.5 反射的优缺点 2. Class类并获取Class实例2.1 理解Class2.1.1 理论上2.1.2 内存结构上 2.2 获取Class类的实例(四种方法)2.3 哪些类型可以有Class对象2.4…

Windows安装rabbitmq

Windows安装rabbitmq 一、下载1、下载erlang2、下载rabbitmq 二、安装1、安装erlang2、安装rabbitmq3、简单使用 一、下载 1、下载erlang 点击右侧下载地址,跳转下载,点击下载 跳转后,点击download windows install即可下载。 2、下载rab…

微服务---分布式缓存redis进阶-redis集群部署

分布式缓存 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: 0.学习目标 1.Redis持久化 Redis有两种持久化方案: RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件&#xf…

基于Kali搭建SSH弱口令靶机并用Nmap实现排查

前言正文1、为宿主主机配置nmap环境变量2、为宿主主机和靶机配置同一局域网环境3、为靶机配置弱口令4、为靶机配置SSH服务[^2]5、主机用Nmap对靶机进行扫描5、主机用弱口令工具对靶机渗透6、验证弱口令 参考文献 前言 有时候,需要我们搭建SSH弱口令环境&#xff0c…

【数据结构】超详细之单向链表(C语言实现)

文章目录 前言一、单向链表是什么?二、单向链表实现步骤 1.打印链表数据以及实现链表头插2.实现链表尾插3.实现链表头删尾删4.实现链表查找5.实现链表在pos之前/之后插入6.实现链表删除pos位置的值7.实现链表删除pos之后位置的值总结 前言 今天我要介绍单向链表&am…

可变参数列表的使用与原理

序言 我们自己编写的函数通常参数是固定的,这样使得某些功能不能得到我们想要的结果,比如我们想求出2个数的最大值的代码不能用于求处3个数的最大值,因此,C语言定义了可变参数列表来编写参数个数不确定的函数。具有可变参数列表的…

Golang每日一练(leetDay0054)

目录 157. 用 Read4 读取 N 个字符 Read-n-characters-given-read4 🌟🌟 158. 用 Read4 读取 N 个字符 II Read-n-characters-given-read4-ii-call-multiple-times II 🌟🌟 🌟 每日一练刷题专栏 🌟 Gol…

拿捏SQL:以“统计连续登录天数超过3天的用户“为例拿捏同类型SQL需求

文章目录 [TOC](文章目录) 一、介绍案例:以"统计连续登录天数超过3天的用户"为需求。数据准备方案1:常规思路针对对数据user_id分组,根据用户的活动日期排序用登录日期与rn求date_sub,得到的差值日期如果是相等的&#…

Python非线性回归预测模型实验完整版

非线性回归预测模型 实验目的 通过非线性回归预测模型,掌握预测模型的建立和应用方法,了解非线性回归模型的基本原理 实验内容 非线性回归预测模型 实验步骤和过程 (1)第一步:学习非线性回归预测模型相关知识。 非线性回归预测模型是指…

Spring框架中的单例Beans是线程安全的么?

在Spring框架中,单例Beans默认是线程安全的。 当你在Spring框架中声明一个单例Bean并配置为默认的单例作用域时,Spring会确保对该Bean的并发访问是线程安全的。以下是一个简单的代码演示: 假设我们有一个名为 SingletonBean 的单例 Bean 类…

Mysql目录结构

一、目录结构 <1> 主要目录结构 find / -name mysql<2> 数据库文件目录 目录&#xff1a;/var/lib/mysql/ 配置方式&#xff1a;show variables like ‘datadir’; <3> 相关命令目录 目录&#xff1a;/usr/bin&#xff08;mysqla…

VMware安装CentOS7遇到的问题记录

文章目录 1、执行ifconfig后&#xff0c;ip地址不显示解决方法&#xff1a; 2、CentOS ip地址老是变动&#xff0c;配置固定ip解决方法 1、执行ifconfig后&#xff0c;ip地址不显示 问题背景&#xff1a;VMware安装centos7后&#xff0c;启动虚拟机&#xff0c;在终端中执行if…

MySQL示例数据库(MySQL Sample Databases) 之 sakila数据库

文章目录 MySQL示例数据库(MySQL Sample Databases) 之 sakila数据库官方示例数据介绍sakila数据库sakila数据库安装sakila/sakila-schema.sql的脚本内容sakila的结构参考 MySQL示例数据库(MySQL Sample Databases) 之 sakila数据库 官方示例数据介绍 MySQL 官方提供了多个示…

Mysql存储json格式数据需要掌握的

目录 一、前言二、什么是 JSON三、Mysql当中json函数四、JSON值部分更新4.1.使用 Partial Updates 的条件4.2.如何在 binlog 中开启 Partial Updates4.3.关于 Partial Updates 的性能测试 五、如何对 JSON 字段创建索引六、mybatis取json类型的数据七、总结 一、前言 最近做的一…

[实训] 实验1-SPI数据传输基础实验(上)

目 录​​​​​​​ 一、实验目的 二、实验仪器及器件 三、实验内容及原理 四、实验步骤​​​​​​​ 五、实验测试数据表格记录 六、实验数据分析及处理 七、实验结论与感悟 一、实验目的 使用FPGA/ARM实现SPI数据传输实验&#xff1b;实现数据传输程序的编写、下载…