Python接口自动化测试实战详解,你想要的全都有

news2024/9/29 23:36:42

前言

接口自动化测试是当前软件开发中最重要的环节之一,可以提高代码质量、加速开发周期、减少手工测试成本等优点。Python语言在接口自动化测试方面应用广泛,因为它具有简单易学、开发效率高、库丰富等特点。

一、接口自动化测试概述

接口自动化测试(API Testing)是通过编程对应用程序开放的接口进行测试的方法。与GUI测试不同,接口测试不考虑界面效果,而关注应用程序的数据流和逻辑结构。接口自动化测试可以帮助开发人员在构建和调试应用程序时更快地找到问题,并确保应用程序的正确性和安全性。

Python语言拥有广泛的接口自动化测试库,如Requests、Httpie、RESTful API、jsonschema等。这些库专门用于发送HTTP请求、解析JSON响应、验证请求参数和响应内容等,极大地推动了Python在接口自动化测试领域的发展。

二、搭建Python接口自动化测试框架

在开始编写接口自动化测试脚本之前,需要先搭建一个合适的测试框架。Python的测试框架主要包括unittest和pytest两种,它们都支持自动测试套件发现和执行、断言处理和报告生成等功能。以下是一个基于pytest的Python接口自动化测试框架示例:

安装pytest和requests库

在开始之前,需要先安装pytest和requests库。可以使用pip或conda进行安装。

pip install pytest requests
  1. 编写测试脚本

创建一个名为test_api.py的文件,并添加以下代码:

import requests
import json
 
def test_get_users():
    url = "https://jsonplaceholder.typicode.com/users"
    response = requests.get(url)
    assert response.status_code == 200
    assert len(response.json()) == 10
 
def test_post_user():
    url = "https://jsonplaceholder.typicode.com/users"
    data = {
        "name": "John Doe",
        "email": "johndoe@test.com",
        "phone": "123-456-7890"
    }
    headers = {"Content-Type": "application/json"}
    response = requests.post(url, data=json.dumps(data), headers=headers)
    assert response.status_code == 201
    assert response.json()["id"] == 11

这个测试脚本包含了两个测试用例:test_get_users和test_post_user。第一个测试用例发送GET请求,检查响应状态码和响应内容;第二个测试用例发送POST请求,并验证响应状态码和创建用户ID是否正确。

运行测试脚本

在终端中进入test_api.py所在的目录,并运行以下命令:

pytest

如果所有测试用例都通过,输出结果应该类似于以下内容:

============================= test session starts =============================
platform win32 -- Python 3.8.5, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
rootdir: C:\Users\user\Desktop\test
collected 2 items
 
test_api.py ..                                                         [100%]
 
============================== 2 passed in 1.55s ==============================

三、常用接口自动化测试库示例

除了requests库外,Python还有许多其他的接口自动化测试库可供选择。以下是几个常用的Python接口自动化测试库示例。

Httpie

Httpie是一个命令行HTTP客户端工具,可以简单方便地与RESTful API交互。使用Httpie,可以发送GET、POST、PUT、DELETE等请求,并支持JSON

Httpie的方法与requests库类似,使用pip进行安装:

pip install httpie

以下是一个使用Httpie发送GET请求示例:

http GET https://jsonplaceholder.typicode.com/users
  1. RESTful API

RESTful API是一种基于HTTP协议实现的API接口规范,通常使用JSON或XML格式传输数据。Python中有许多支持RESTful API测试的库,如restfulpy、Flask-RESTful等。

以下是一个使用restfulpy发送POST请求示例:

from restfulpy.clients import RestClient
 
client = RestClient('https://jsonplaceholder.typicode.com')
data = {
    "name": "John Doe",
    "email": "johndoe@test.com",
    "phone": "123-456-7890"
}
response = client.post('/users', json=data)
assert response.status_code == 201
assert response.json()["id"] == 11
  1. jsonschema

jsonschema是一个Python库,用于验证JSON数据的结构和内容是否正确。使用jsonschema,可以定义JSON数据的模式,并验证输入的数据是否符合模式要求。

以下是一个使用jsonschema验证JSON数据示例:

import jsonschema
 
schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "age": {"type": "number"}
    }
}
 
data = {
    "name": "John Doe",
    "age": "30"
}
 
try:
    jsonschema.validate(instance=data, schema=schema)
except jsonschema.exceptions.ValidationError as e:
    print(e)

四、总结

Python是一种非常强大的语言,特别适合于接口自动化测试和其他测试领域。Python拥有许多优秀的库和框架,如requests、Httpie、RESTful API、jsonschema等,可以帮助我们更快地构建和执行测试用例。

通过本文的介绍,相信读者们已经对Python接口自动化测试有了一定的了解,并能够使用Python编写简单的测试脚本。当然,接口自动化测试是一个广阔的领域,还有很多需要学习和掌握的知识。希望读者们能够不断学习和提升自己,在软件开发中取得更好的成果。

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

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

六个交易日市值蒸发20亿港元,第四范式难逃AI大模型“魔咒”

AI独角兽第四范式终于敲钟了。 北京第四范式智能技术股份有限公司(06682.HK,下称“第四范式”)于9月28日正式挂牌港交所,发行价为55.60港元/股,IPO首日报收58.50港元/股。 上市后6个交易日,截至10月6日港股收盘,第四…

【无监控,不运维!这份监控建设总结太赞了!】

运维行业有句话:“无监控、不运维”,是的,一点也不夸张,监控俗称“第三只眼”。没了监控,什么基础运维,业务运维都是“瞎子”。所以说监控是运维这个职业的根本。 尤其是在现在DevOps这么火的时候&#xf…

【网络安全】网络安全的最后一道防线——“密码”

网络安全的最后一道防线——“密码” 前言超星学习通泄露1.7亿条信息事件武汉市地震监测中心遭境外网络攻击事件 一、密码起源1、 古代密码2、近代密码3、现代密码4、量子密码 二、商密专栏推荐三、如何利用密码保护账号安全?1、账号安全的三大危险?&…

LLaMA Adapter和LLaMA Adapter V2

LLaMA Adapter论文地址: https://arxiv.org/pdf/2303.16199.pdf LLaMA Adapter V2论文地址: https://arxiv.org/pdf/2304.15010.pdf LLaMA Adapter效果展示地址: LLaMA Adapter 双语多模态通用模型 为你写诗 - 知乎 LLaMA Adapter GitH…

PSN 两步验证解除2023.10.9经验贴

背景 本人10月1号收到Sony邮件,说是不规律登录,需修改密码后登录,然后我10月8日登录PS4的时候,提示两步验证。当时就想坏了,然后找B站相关经验贴,10月9号电话香港客服,解除了两步验证&#xff0…

IOT 围炉札记

文章目录 一、蓝牙二、PAN1080三、IOT OS四、通讯 一、蓝牙 树莓派上的蓝牙协议 BlueZ 官网 BlueZ 官方 Linux Bluetooth 栈 oschina 二、PAN1080 pan1080 文档 三、IOT OS Zephyr 官网 Zephyr oschina Zephyr github 第1章 Zephyr简介 第2章 Zephyr 编译环境搭建&#…

云管理平台基本功能有哪些?适配国产化平台吗?

随着云计算的大力发展,越来越多的企业需要云管理平台了。但很多其他对于云管理平台不是很了解,有小伙伴问,云管理平台基本功能有哪些?适配国产化平台吗?这里我们小编就给大家解答一下。 云管理平台基本功能有哪些&am…

【Java】中小学智慧校园管理系统源码 SaaS模式+电子班牌系统

智慧校园电子班牌系统,主要针对中小学校园研发,为校园管理提供智慧管理方案,提供校园智慧管理平台,在大数据平台下,对应用系统进行统一、集中管理,囊括校园管理全方面,实现对校园、班级、教师、…

商城系统选型:Java商城系统还是PHP商城系统好?

电子商务的不断发展,商城系统成为了企业建设在线销售平台的重要组成部分。 可是在选择合适的商城系统时,许多企业面临着一个重要的决策:是选择Java商城系统还是PHP商城系统呢?下面就对这两种常见的商城系统进行比较,并…

jump server是什么

Jump Server(跳板服务器)是一种安全的中间服务器,用于管理和控制对其他服务器的访问。它提供了一种安全的方式,允许管理员通过跳板服务器来管理和连接其他服务器,而无需直接从外部网络访问内部服务器。 跳板服务器的主…

seata分布式事务理论概述

分布式事务产生的原因: 数据库分库分表 应用的SOA化。就是业务的服务化(面向服务架构) 分布式事务的解决方案: 1、两阶段提交协议2PC 这里的两阶段提交和redolog binlog的两阶段提交不是一个东西,redo log和bin log的两阶段提交保证的是…

vulnhub靶场 Kioptrix-level-1

简介: vulnhub是一个提供靶场环境的平台。而Kioptrix-level-1就是一个对新手比较友好的靶场。初学渗透的同学可以做做试试看,项目地址如下。 项目地址:Kioptrix: Level 1 (#1) ~ VulnHub 信息收集 查看本机IP,靶机跟kali都是使用…

sqli-lab靶场通关

文章目录 less-1less-2less-3less-4less-5less-6less-7less-8less-9less-10 less-1 1、提示输入参数id,且值为数字; 2、判断是否存在注入点 id1报错,说明存在 SQL注入漏洞。 3、判断字符型还是数字型 id1 and 11 --id1 and 12 --id1&quo…

C++中的对象切割(Object slicing)问题

在C中&#xff0c;当我们把派生类对象向上强制转型为基类对象时&#xff0c;会造成对象切割&#xff08;Object slicing&#xff09;问题。  请看下面示例代码&#xff1a; #include <iostream> using namespace std;class CBase { public:virtual ~CBase() default;v…

nginx交叉编译移植-基于nuc980开发板的笔记

目录 一、nginx的介绍 二、开发环境 三、交叉编译开发过程 四、开发板测试 五、问题 一、nginx的介绍 nginx是一个高性能的Web服务器软件&#xff0c;它可以作为反向代理服务器、负载均衡器、HTTP缓存和安全策略等多种用途。nginx的设计目标是高并发、高性能、高可靠性和低内存…

postgresql中的近一周,近一月,近三月,近一年日期段拆分

统计中经常会遇到,近一周,近一月,近三月,近一年数据统计,下面提供了postgresql拆分日期段的sql -- 近一周,每一天起止时间 select generate_series startDate,generate_series interval 1 day endDate from generate_series( NOW()::date interval -6 day, now()::timest…

揭秘 Go 中的 new() 和 make() 函数

Go&#xff08;或 Golang&#xff09;是一种现代、静态类型、编译型的编程语言&#xff0c;专为构建可扩展、并发和高效的软件而设计。它提供了各种内置的函数和特性&#xff0c;帮助开发人员编写简洁高效的代码。其中包括 new() 和 make() 函数&#xff0c;这两个函数乍看起来…

财务明细一目了然,颜色标记记录轻松掌握个人账目!

无论您是想更好地理清个人收支&#xff0c;还是希望在财务管理中更加高效&#xff0c;我们为您推荐一款绝佳的财政管理神器&#xff1a;颜色标记记录&#xff01; 第一步&#xff0c;首先&#xff0c;我们要先进入【晨曦记账本】主页面&#xff0c;并点击上方功能栏里的“添加…

开发日志:企业微信实现扫码登录(WEB)

一&#xff1a;获取扫码登陆所需的参数&#xff1a;appid,secret,agentid 登录企业微信&#xff1a;https://work.weixin.qq.com/ 扫码登录文档&#xff1a;https://work.weixin.qq.com/api/doc/90000/90135/90988 1&#xff1a;获取appid 点击我的企业就可以看到企业ID信息&am…

【AIGC】如何在使用stable-diffusion-webui生成图片时看到完整请求参数

文章目录 背景开搞使用遇到的问题 背景 通过代码调用Stable Diffusion的txt2img、img2img接口时&#xff0c;很多时候都不知道应该怎么传参&#xff0c;比如如何指定模型、如何开启并使用Controlnet、如何开启面部修复等等&#xff0c;在sd-webui上F12看到的请求也不是正式调用…