使用 pyhttptest 进行 RESTful API 测试的最佳实践

现在,无论是开发还是使用服务,我们每个人都面临着 REST API 的挑战。同时,我们正处于微服务的流行时代,我们将业务逻辑拆分为多个独立的小服务。这些服务大多遵循 RESTful 原则,并使用 JSON 格式进行通信,因为其简单性使其成为最广泛使用的格式。

pyhttptest - 这是一个命令行工具,用于对 RESTful APIs 进行 HTTP 测试。

此工具通过三个简单的步骤实现自动化测试。

1. 安装软件包

pip install pyhttptest

2. 描述针对您的 API 服务的 HTTP 请求测试用例

使用简单且广泛使用的 JSON 格式在文件中描述您的 HTTP 请求测试用例。

单个测试用例定义示例

  • 发送一个 HTTP GET 请求

    • 创建一个JSON文件,例如,data/test_server_status.json
  • {"name": "TEST: Get server status","verb": "GET","endpoint": "/get","host": "https://httpbin.org","headers": {"Accept-Language": "en-US"}
    }
    
  • 发送一个 HTTP POST 请求

    • 创建一个 JSON 文件,例如,data/test_create_html_bin.json
  • {"name": "TEST: Create an HTML bin","verb": "POST","endpoint": "post","host": "https://httpbin.org","payload": {"content": "Hello, world!"}
    }
    

多个测试用例定义示例

  • 创建一个 JSON 文件,例如,data/requests.json
[{"name": "TEST: List all users","verb": "GET","endpoint": "api/v1/users","host": "http://localhost:8085/","headers": {"Accept-Language": "en-US"},"query_string": {"limit": 1}},{"name": "TEST: Add a new user","verb": "POST","endpoint": "api/v1/users","host": "http://localhost:8085/","payload": {"username": "pyhttptest","email": "admin@pyhttptest.com"}},{"name": "TEST: Modify an existing user","verb": "PUT","endpoint": "api/v1/users/XeEsscGqweEttXsgY","host": "http://localhost:8085/","payload": {"username": "pyhttptest"}},{"name": "TEST: Delete an existing user","verb": "DELETE","endpoint": "api/v1/users/XeEsscGqweEttXsgY","host": "http://localhost:8085/"}
]

3. 运行命令并获得报告

pyhttptest execute data/test_server_status.json

单个测试用例的报告

pyhttptest execute data/requests.json

多个测试用例的报告

您可以传递给.json文件的属性包括:

  • name - 测试用例的名称。
  • verb - HTTP 方法。
  • endpoint - 您想要在服务器上调用的资源。
  • host - 服务器主机地址。
  • headers - HTTP 头部。支持所有 HTTP 头部字段。
  • query_string - URL 问号后的查询字符串参数。
  • payload - 数据。

最佳实践

您可能会问,在我的现有/新项目中如何添加、结构和组织测试用例。每个含有测试的 Python 项目都会在其项目目录中有一个名为tests/的文件夹。

根据惯例,像unittestpytest这样的框架会发现并执行 Python 脚本中定义的测试用例。为了不混淆这些测试并保持惯例,我建议在项目根目录创建一个名为live_tests/的新目录。

在这个新目录中,您可以放入所有定义 API 测试用例的.json文件。这样做可以轻松区分您的测试,但这真的取决于您!

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

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

相关文章

Qt项目使用pato mqtt C

一,下载pato mqtt C 源码 git 地址:https://github.com/eclipse/paho.mqtt.c.git git 地址可能下载不下来,提供我的gitee地址 gitee地址:https://gitee.com/chaojidahuaidan2021/paho.mqtt.c.git 二,编译共享库 clone下来后,将项目导入到Qt工程中,此时这是一个cmke工程…

三十一、openlayers官网示例Draw Features解析——在地图上自定义绘制点、线、多边形、圆形并获取图形数据

官网demo地址: Draw Features 先初始化地图,准备一个空的矢量图层,用于显示绘制的图形。 initLayers() {const raster new TileLayer({source: new XYZ({url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/…

Kubernetes和Docker对不同OS和CPU架构的适配关系

Docker Docker官网对操作系统和CPU架构的适配关系图 对于其他发行版本,Docker官方表示没有测试或验证在相应衍生发行版本上的安装,并建议针对例如Debian、Ubuntu等衍生发行版本上使用官方的对应版本。 Kubernetes X86-64 ARM64 Debian系 √ √ Re…

贪心算法[1]

首先用最最最经典的部分背包问题来引入贪心的思想。 由题意可知我们需要挑选出价值最大的物品放入背包&#xff0c;价值即单位价值。 我们需要计算出每一堆金币中单位价值。金币的属性涉及两个特征&#xff0c;重量和价值。 所以我们使用结构体。 上代码。 #include <i…

基于单张图片快速生成Metahuman数字人(模型贴图绑定)的工作流演示

基于单张图片快速生成Metahuman数字人&#xff08;模型贴图绑定&#xff09;的工作流演示 MetahumanModeler, 是我基于facebuilder以及metahuman的理解开发而成&#xff0c;插件可以基于单张图片生成metahuman拓扑结构的面部3d模型&#xff0c;同时生成对应的面部的贴图&#…

【debug】windows11安装WSL+Docker+本地部署cvcat

windows系统安装wsl虚拟机 首先观察是否已启用虚拟化&#xff1a; 在windows应用商店下载wsl 下载好后打开&#xff0c;创建用户名和密码&#xff0c;即可使用&#xff1a; 换源&#xff1a;ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirr…

leetcode231-Power of Two

题目 给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 示例 1&#xff1a; 输入&#xff1a;n 1 输出&#xff1…

在Spring中自定义事件及发布与监听

在Spring框架中&#xff0c;自定义事件及其发布与监听是一个涉及Spring事件机制的过程。Spring提供了一个基于观察者模式的事件发布和监听机制&#xff0c;允许在Spring容器中的组件之间进行松耦合的通信。以下是如何自定义事件以及如何发布和监听这些事件的步骤&#xff1a; …

LeetCode215数组中第K个最大元素

题目描述 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 解析 快速排序的思想&#xff…

代码随想录算法训练营第33天 | 1005.K次取反后最大化的数组和、134.加油站、135.分发糖果

代码随想录算法训练营第33天 | 1005.K次取反后最大化的数组和、134.加油站、135.分发糖果 自己看到题目的第一想法看完代码随想录之后的想法自己实现过程中遇到哪些困难今日收获&#xff0c;记录一下自己的学习时长 链接: 1005.K次取反后最大化的数组和 链接: 134. 加油站 链接…

C++:vector的介绍及使用

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 文章目录 前言 一、vector的介绍 二、vector的使用 2.1.构造和赋值重载&#xff08;Member functions&#xff09; 2.2 vector iterator 的使用 2.3 vector 空间增长问题 2.4 vector 增删查改 三 sort 四 v…

邦芒面试:面试礼仪细节大揭秘

在求职过程中&#xff0c;面试礼仪如同一面镜子&#xff0c;直接反映出求职者的专业素养和个人品质。它不仅能够为求职者加分&#xff0c;还能为面试官留下深刻且积极的印象。以下就是一份详尽的面试礼仪全攻略&#xff0c;助你一臂之力。 一、守时为先 守时是面试的第一步&am…

所以研究生有不变胖的吗?

天天吃 记得和骏骏一样减肥 分享昨天无人机拍的照片

FL Studio v21.2.3.4004中文破解版百度网盘下载

FL Studio v21.2.3.4004中文破解版是一款完整的软件音乐制作环境或数字音频工作站 (DAW)。代表了超过 18 年的创新发展&#xff0c;它在一个软件包中提供了您创作、编曲、录制、编辑、混音和掌握专业品质音乐所需的一切。FL Studio v21.2.3.4004中文破解版现在是世界上最受欢迎…

长三角智能科技高端盛会—南京人工智能展览会(南京智博会)

南京&#xff0c;作为一座历史悠久的文化名城&#xff0c;早已不仅仅以其深厚的文化底蕴和独特的自然风貌著称于世。而今&#xff0c;这座古老而又年轻的城市&#xff0c;正以其卓越的科技实力和创新精神&#xff0c;成为中国乃至全球科研领域的一颗璀璨明珠。南京不仅是中国三…

No input file specified.(‘.user.ini’文件问题宝塔复制到本地,其他情况可跳过)

症状 病因 一般是宝塔直接copy到本地的情况。 宝塔面板中的.user.ini文件是一个重要的配置文件&#xff0c;它主要用于配置PHP运行环境和网站环境。以下是.user.ini文件的主要作用和操作建议&#xff1a; 防止跨目录访问和文件跨目录读取。这是.user.ini文件的主要作用之一&a…

FastAPI - 组织模块2

FastAPI没有强制指定某种格式来组织项目结构&#xff0c;开发者可以根据自己喜好和项目需要来定制自己的项目结构。 https://fastapi.tiangolo.com/zh/tutorial/bigger-applications/ 在项目根目录创建python包routers&#xff0c;然后创建member.py文件 member.py文件内容 …

pytorch修改ConvNeXt-T网络

使用迁移学习&#xff0c;修改ConvNeXt-T网络&#xff0c;对特征进行融合 import torch import torch.nn as nn import torchvision.models as modelsclass CustomConvNeXtT(nn.Module):def __init__(self, in_channels3, num_classes2, chunk2, csv_shape107, CSVTrue):super…

React Native 之 Platform检测平台模块(十九)

Platform 是一个用于检测当前运行平台&#xff08;如 iOS、Android 或Web&#xff09;的模块。它提供了一组静态属性和方法&#xff0c;允许你根据平台的不同来编写特定的代码或样式。这对于确保跨平台应用在不同操作系统上的一致性和正确性非常有用。 Platform使用代码栗子&am…