Python接口自动化流程(pytest)

作者为蛮不讲李,于2024年1月17日23时45分创作的接口自动化流程, 其浏览量为16。

简介: 本文会阐述怎样运用来开展接口自动化测试, 涵盖环境搭建, 测试框架, 测试用例编写, 断言以及日志记录等方面。借由实际案例以及代码演示, 助力读者迅速掌握接口自动化测试的流程与方法。

于其中, 接口自动化测试一般借助框架来开展。它是一个具备轻量级特性、易于实现扩展的测试框架, 适用于各类规模的测试用例。以下是运用其进行接口自动化测试的基本流程:

环境搭建

第一, 要保证你已然安装了跟pip。接着, 运用pip去安装和相关的依赖项目。开启终端或者命令提示符, 执行下面的命令:

linenums 复制代码
  1. pip install pytest requests

有一个库, 它专门用来发送HTTP请求, 这个库是在进行接口测试的时候, 必定会用到的库, 然后要去创建测试用例。

把一个名为tests的文件夹, 也就是用来放置测试用例的文件夹, 创建在项目根目录下接着呢 在这个tests文件夹里面 创建一个文件 比如说 一个后缀名叫.py的文件 来用以编写测试用例。

把编写测试用例的逻辑, 放置于.py 文件之中, 每个测试用例, 一般是以一种独立的成为函数的形式存于其中, 函数的名字, 是以 test_进行开端的, 比如:

linenums 复制代码
  1. def test_get_user():
  2. # 发送GET请求,获取用户信息
  3. response = requests.get('http://example.com/api/user')
  4. # 断言响应状态码为200
  5. assert response.status_code == 200
  6. # 断言返回的数据中包含用户名
  7. assert 'username' in response.json()

于上述代码里头, 我们借助库去发送GET请求, 以此来获取用户信息。随后, 运用断言去验证响应的状态码是不是200, 并且还要看返回的数据之中有没有包含用户名。接着运行测试用例。

于终端或者命令提示符里头, 闯入项目根目录, 运行下面这些命令用以执行测试用例。

linenums 复制代码
  1. pytest tests/

能自动扫描tests文件夹里的测试用例, 接着执行其中的测试逻辑, 测试结果会在终端或者命令提示符里输出显示, 有断言以及日志记录。

编写测试用例之际, 以合理方式运用断言, 去验证测试所得结果是不是契合预期, 常见的断言方法涵盖了多种, 比如、、等, 例如:

linenums 复制代码
  1. def test_post_user():
  2. # 发送POST请求,创建用户
  3. response = requests.post('http://example.com/api/user', data={'username': 'testuser', 'password': 'testpass'})
  4. # 断言响应状态码为201
  5. assert response.status_code == 201
  6. # 断言返回的数据中包含新创建的用户ID
  7. assert 'id' in response.json()

除了进行断言之外, 还能够运用模块去记录测试期间的日志信息, 以此方便于调试以及排查问题, 举例来说:

linenums 复制代码
  1. def test_put_user():
  2. # 发送PUT请求,更新用户信息
  3. response = requests.put('http://example.com/api/user/1', data={'username': 'newuser'})
  4. # 记录日志信息
  5. logging.info(f'Response status code: {response.status_code}')
  6. logging.info(f'Response body: {response.json()}')

如果记录了日志信息, 那么在测试失败之际, 便能迅速定位问题究竟出在哪里, 进而提升调试工作的效率。

上述内容展示的是, 运用来开展接口自动化测试的基础流程。于实际运用期间 , 能够依照项目需求以及具体情形予以适度的调整跟扩展。与此同时 , 还能够联合其他插件以及工具 , 像 mock 等等 , 达成更丰富多彩的测试场景以及功能。借助持续不断地实践并总结经验 , 能够提高接口自动化测试 的效率与准确性。

相关推荐
Cooper254 分钟前
DDC 命令成功但屏幕不动:用 gamma 表重做亮度映射
python·mac
师夷长技以自愈32 分钟前
手搓 AI Agent 第 7 篇:菜做砸了别硬炒——错误分类 + 双账本熔断
人工智能·python
用户9562562542941 分钟前
15 分钟社媒简报 Agent:我只用了搜索和模型两步
python·api
Dumbness44 分钟前
关键词回复里写了 {订单号},群机器人整条消息都炸了
python·微信
调接口的阿光1 小时前
调用对话接口时输出被截断怎么办:先看 finish_reason,再决定是续写一次、缩小范围,还是换成更短的格式(Python)
人工智能·python
Cooper251 小时前
单文件 Flask 跑通微信服务器校验:先跑通再谈工程化
python·flask
Cooper251 小时前
三源热榜去重加 AI 摘要:URL 唯一键踩出的三个坑
前端·python
用户4019925568611 小时前
多源异构 B2B 公开需求信号去重与企业实体证据链存储设计(64-bit SimHash 分桶 + Jaccard)
python
aifannihao2 小时前
GitHub Actions 锁文件实测:6 个 uses 只锁住 2 个
python·ci/cd·标准库·供应链安全·github actions
2601_967980112 小时前
使用gensim处理文本(1)语料库与词向量空间
python·自然语言处理·gensim·词向量·文本分析