目录

测试需求

实现思路

完整框架

2.1 初始化数据 (test_data.xlsx)

2.2 核心脚本 (api_client.py)

2.3 测试用例 (test_interfaces.py)

2.4 日志 (logging)

2.5 pytest配置文件 (pytest.ini)

2.6 测试报告 (pytest-html)

2.7 入口函数 (run_tests.py)

2.8 完整流程

注意事项

测试需求

简单的一个接口场景: 接口场景:6个接口,分别为登录接口,新建项目接口,导入图片接口,图片识别接口,保存接口,退出登录;

实现思路

初始化数据:准备测试所需的数据,如用户名、密码、项目名称等,并存储在Excel文件中。

读取Excel数据:使用pandas或openpyxl库读取Excel文件中的测试数据。

编写核心脚本:封装发送HTTP请求、处理响应的逻辑。

编写测试用例:使用pytest编写针对每个接口的测试用例。

日志记录:使用logging库记录测试过程中的关键信息。

pytest配置文件:设置pytest的相关配置,如插件、命令行参数等。

生成测试报告:使用pytest插件(如pytest-html)生成测试报告。

入口函数:编写一个入口脚本,用于启动整个测试流程。

完整框架

要实现基于Python、requests、excel、pytest的接口自动化测试,我们需要按照以下步骤和框架进行:

2.1 初始化数据 (test_data.xlsx)

| TestID | TestCase | URL | Method | Headers | Body | ExpectedStatus | ExpectedResponse |

|--------|----------------|--------------------|--------|-----------|--------------------------|----------------|------------------|

| 1 | Login | /api/client/login | POST | ... | {'username': 'user1', ...} | 200 | {...} |

| 2 | CreateProject| /api/projects | POST | ... | {'project_name': 'proj1'} | 201 | {...} |

| 3 | ImportImage | /api/projects/{id}/images | POST | ... | {'image_file': 'path/to/image'} | 201 | {...} |

| 4 | RecognizeImage| /api/projects/{id}/images/{image_id}/recognize | GET | ... | | 200 | {...} |

| 5 | Save | /api/projects/{id} | PUT | ... | {'updated_data': ...} | 200 | {...} |

| 6 | Logout | /api/client/logout | POST | | | 200 | {...} |

2.2 核心脚本 (api_client.py)

import requests

import logging

# 定义APIClient类,用于封装API交互逻辑

class APIClient:

def __init__(self, base_url, username, password):

# 初始化时接收API的基础URL、用户名和密码

self.base_url = base_url

self.username = username

self.password = password

# 初始化token为None,登录成功后设置

self.token = None

# 初始化请求头,之后根据token进行更新

self.headers = {

}

# 创建一个requests会话对象,用于保持连接和cookie

self.session = requests.Session()

# 初始化日志系统

self.initialize_logging()

def initialize_logging(self):

# 配置基础的日志信息,设置日志级别和格式

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

# 获取当前类的日志器

self.logger = logging.getLogger(__name__)

def login(self):

"""

执行登录操作,获取token并保存到实例变量中

"""

# 登录API的URL

url = f"{

self.base_url}/login"

# 准备登录所需的payload

payload = {

'username': self.username, 'password': self.password}

# 发送POST请求进行登录

response = self.session.post(url, json=payload)

# 检查响应状态码

if response.status_code == 200:

# 提取token并保存到实例变量

self.token = response.json().get('token')

参考阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。