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 等等 , 达成更丰富多彩的测试场景以及功能。借助持续不断地实践并总结经验 , 能够提高接口自动化测试 的效率与准确性。

相关推荐
坤坤子吖6 小时前
Python基础语法学习:条件、循环与程序控制
开发语言·笔记·python·学习
伞伞悦读6 小时前
【第53期】有序插入把二叉搜索树变成链:别只看“树”的名字
python
郝学胜_神的一滴6 小时前
AI 编程智能体 04:一文看懂智能体的核心能力与概念辨析
人工智能·python
一缕82年的清风7 小时前
实战指南:如何把现有 REST API 工业级封装为 MCP(Model Context Protocol)服务
python·mcp
狼与自由7 小时前
python打包
开发语言·python
Είναι η κοπέλα7 小时前
Python 虚拟环境:venv、conda 与 Python 版本选择全解
开发语言·python·conda
蒲公英eric7 小时前
Python工具链与LaTeX排版:把兵器配齐
人工智能·python·算法·数学建模·数学建模工具
言乐67 小时前
JavaScript概括前端原理
开发语言·前端·javascript·python·ecmascript
用户019027581617 小时前
如何用 Python 回测肯特纳通道(Keltner Channel)突破策略?(EMA+ATR 通道)
python
老歌老听老掉牙8 小时前
基于Frenet-Serret框架的自然轴系关系推导与SymPy验证
python·sympy·自然轴系