专栏首页叉叉敌使用 pyhttptest 轻松测试 REST API

使用 pyhttptest 轻松测试 REST API

现在,我们每个人都面临着 REST API,要么开发这样的服务,要么使用这样的服务。 此外,我们正处于微服务的时尚时代,我们将业务逻辑分割成独立于每个服务的小型独立服务。 这些服务大多遵循 RESTful 原则,并使用 JSON 格式进行通信,由于其简单性,JSON 格式成为最广泛使用的格式​。

pyhttptest 命令行工具,用于通过 RESTful api 进行 HTTP 测试。

这个工具通过简单的三个步骤自动化测试

  1. 安装
pip install pyhttptest
  1. 用文件中最简单且广泛使用的格式 JSON 描述针对 API 服务的 HTTP 请求测试用例
  • 发送 HTTP GET 请求 json文件内容如下
{
  "name": "TEST: Get server status",
  "verb": "GET",
  "endpoint": "/get",
  "host": "https://httpbin.org",
  "headers": {
    "Accept-Language": "en-US"
  }
}

---

  • 发送 HTTP POST 请求 json文件内容如下
{
  "name": "TEST: Create an HTML bin",
  "verb": "POST",
  "endpoint": "post",
  "host": "https://httpbin.org",
  "payload": {
    "content": "Hello, world!"
  }
}

  • 多个测试用例定义示例
[
  {
    "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/"
  }
]
  1. 运行命令并获取报告
pyhttptest execute data/filename.json
  • 来自测试用例的报告截图

测试用例的属性

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

Tips

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

从这个目录按惯例,伟大的框架,如unittest and 及pytest发现并执行 Python 脚本中定义的测试用例。 为了不搞乱这些测试并打破常规,我建议在您的项目根目录中创建一个名为live_tests/ 。

在新目录中,可以将所有json文件,定义了 API 测试用例的文件。 通过这样做,您的测试将很容易区分。

https://wx2.sinaimg.cn/mw690/6374f516ly1gb288ffq39j206n06r3yx.jpg

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python常用库-Requests网络请求

    Python 应用场景非常广泛,大数据、爬虫、人工智能等,常见的热门领域都离不开这个家伙,今天又来说说 Python 常用的库之一「Requests」,只要是与...

    叉叉敌
  • Python 字符串格式化操作 - format方法

    字符串操作 对于 %, 官方以及给出这种格式化操作已经过时,在 Python 的未来版本中可能会消失。 在新代码中使用新的字符串格式。因此推荐大家使用forma...

    叉叉敌
  • Python 字符串格式化操作 - format方法

    字符串操作 对于 %, 官方以及给出这种格式化操作已经过时,在 Python 的未来版本中可能会消失。 在新代码中使用新的字符串格式。因此推荐大家使用forma...

    叉叉敌
  • 谈谈HTTP1.0,HTTP1.1和HTTP2.0区别

    HTTP协议(HyperTextTransferProtocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。

    张炳
  • python-简单测试wsgi

    REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy ...

    py3study
  • HTTP/3 竟然基于 UDP,HTTP 协议这些年都经历了啥?

    花下猫语:若说最为人知的网络协议,大概非 HTTP 协议莫属。但是,关于这个协议的更多细节,相信很多人都答不上来。现在它已经发展到第三代了,而且出现了重大的转变...

    Python猫
  • HTTP 前世今生

    「Http 协议是怎么来的?最开始是什么样子?又是如何一步步发展到今天,几乎统治了整个互联网世界」

    码哥字节
  • HTTP的世界观

    前端圈技术的爆发式增长随之而来的开发人员学不动的疲惫感、焦虑感和不想跳出舒适圈的拖延懒惰。

    童欧巴
  • django rest framework http status code

    判断请求是否成功,可以从返回的状态码来区别,所以当写接口的时候也要这样做,标准化.

    py3study
  • 一篇文章彻底了解HTTP发展史

    HTTP 协议可以算是在人们日常生活、工作用得比较多的协议。我们使用浏览器访问网页,就是通过 HTTP 来传递数据;客户端跟服务器交互,大部分会使用到 HTTP...

    猴哥yuri

扫码关注云+社区

领取腾讯云代金券