当前位置: 首页 > news >正文

httpx 接口测试教程

httpx 接口测试教程

httpx是一个功能强大的 Python HTTP 库,可用于接口测试。以下是一个httpx接口测试教程:

安装httpxCSDN 博客

使用以下命令安装httpx

pip install httpx

基本使用

GET 请求(CSDN 博客

发送一个简单的 GET 请求,并获取响应状态码和响应内容(以 JSON 格式为例):

import httpx

r = httpx.get("http://httpbin.org/get")

print(r.status_code)

print(r.json())

POST 请求(CSDN 博客

发送带参数的 POST 请求:

import httpx

payload = {'key1': 'value1', 'key2': 'value2'}

r = httpx.post("http://httpbin.org/post", data=payload)

print(r.json())

异步调用(CSDN 博客

httpx支持异步操作,这在需要同时发送多个请求时能显著提高效率。

import httpx

import asyncio

async def main():

    async with httpx.AsyncClient() as client:

        resp = await client.get('http://httpbin.org/get')

        result = resp.json()

        print(result)

asyncio.run(main())

处理认证

基本认证

如果接口需要基本认证,可以这样做:

import httpx

url = "http://httpbin.org/basic-auth/user/pass"

auth = ("user", "pass")

r = httpx.get(url, auth=auth)

print(r.status_code)

Bearer Token 认证

对于使用 Bearer Token 认证的接口:

import httpx

url = "http://your-api-url.com"

headers = {"Authorization": "Bearer your_token_here"}

r = httpx.get(url, headers=headers)

print(r.status_code)

断言与响应验证

通常需要验证接口返回的状态码、响应体等是否符合预期。

import httpx

r = httpx.get("http://httpbin.org/get")

# 验证状态码是否为200

assert r.status_code == 200

# 验证响应体中是否包含特定字段

response_data = r.json()

assert "url" in response_data

结合测试框架使用

可以将httpx与测试框架(如unittestpytest)结合使用,进行更规范的接口测试。

使用pytest

安装pytest

pip install pytest

编写测试用例:

import httpx

def test_get_request():

    r = httpx.get("http://httpbin.org/get")

    assert r.status_code == 200

def test_post_request():

    payload = {'key': 'value'}

    r = httpx.post("http://httpbin.org/post", data=payload)

    assert r.status_code == 200

    assert r.json()["form"] == payload

运行测试:

pytest

使用unittest

编写测试用例:

import unittest

import httpx

class TestHTTPX(unittest.TestCase):

    def test_get_request(self):

        r = httpx.get("http://httpbin.org/get")

        self.assertEqual(r.status_code, 200)

    def test_post_request(self):

        payload = {'key': 'value'}

        r = httpx.post("http://httpbin.org/post", data=payload)

        self.assertEqual(r.status_code, 200)

        self.assertEqual(r.json()["form"], payload)

if __name__ == '__main__':

    unittest.main()

运行测试:

python -m unittest your_test_file.py

通过以上步骤,你可以使用httpx进行各种类型的接口测试,从简单的请求发送到复杂的认证处理和断言验证,以及与主流测试框架的集成。

http://www.xdnf.cn/news/1201915.html

相关文章:

  • HarmonyOS 6 云开发-用户头像上传云存储
  • 打通视频到AI的第一公里:轻量RTSP服务如何重塑边缘感知入口?
  • UniappDay04
  • Java 排序
  • Kafka——请求是怎么被处理的?
  • flutter使用firebase集成谷歌,苹果登录
  • Claude Launcher:支持Kimi K2的Claude Code可视化启动工具
  • 力扣988. 从叶结点开始的最小字符串
  • 负载均衡集群HAproxy
  • keepalived
  • Redis做混沌测试都需要测哪些场景?预期如何?
  • 安宝特案例丨AR+AI赋能轨道交通制造:破解人工装配难题的创新实践
  • [免费]【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts)【论文+源码+SQL脚本】
  • 【代码解读】通义万相最新视频生成模型 Wan 2.2 实现解析
  • ESP32学习-按键中断
  • 【重学数据结构】二叉搜索树 Binary Search Tree
  • 源代码管理工具有哪些?有哪些管理场景?
  • [VLDB 2025]面向Flink集群巡检的交叉对比学习异常检测
  • mybatis-plus实体类主键生成策略
  • 设计模式(四)创建型:生成器模式详解
  • Java排序中(a).compareTo(b)与Integer.compare(a, b)区别
  • 推荐系统学习
  • 算法竞赛阶段二-数据结构(37)数据结构循环链表模拟实现
  • 【PCIe 总线及设备入门学习专栏 5.3.4 -- PCIe PHY Firmware 固件加载流程】
  • Android启动时间优化大全
  • 通信名词解释:I2C、USART、SPI、RS232、RS485、CAN、TCP/IP、SOCKET、modbus等
  • Window 部署 coze-stdio(coze 开发平台)
  • vue3.6更新哪些内容
  • 电子电路设计学习
  • MySQL - 索引(B+树)