test_cases测试用例层/test_2_upload

阶段 组件名称 组件来源 功能描述
环境配置 user_info 配置层 conf/setting.py 存储用户敏感信息(如账号密码),用于鉴权参数替换(如 ${username} → 实际值)。
data_dir 工具层 tools/handle_path.py 定义测试数据文件的存储路径(如 Excel 文件路径),统一管理测试资源路径依赖。
数据准备 handle_excel 工具层 tools/handle_excel.py 从 Excel 文件(如 test_data.xlsx)中读取测试用例数据,解析为字典列表供测试用例分发。
测试框架 unittest Python 标准库 提供测试用例基类、测试运行方法(如 setUpClass)及断言方法(如 assertEqual)。
ddt 第三方库(需安装) 实现数据驱动测试,通过 @data 装饰器自动分发参数化测试用例(如多组登录账号测试)。
参数处理 handle_replace 工具层 tools/handle_replace.py 动态替换请求参数中的占位符(如 ${token} → 全局变量值),并清洗非法字符(空格、换行符)。
请求发送 requests 第三方库(需安装) 发送 HTTP 请求(如 POST、GET),支持文件上传(MultipartEncoder)。
handle_requests 工具层 tools/handle_requests.py 封装 requests 方法,统一处理鉴权头注入(如自动添加 Authorization: bearer ${token})及请求异常处理。
响应处理 handle_response 工具层 tools/handle_response.py 处理接口响应数据: 1. 识别 JSON/文本格式并统一封装 2. 使用 jsonpath 动态提取字段(如 $..user_id)。
结果验证 handle_response 工具层 tools/handle_response.py 调用 unittest 的断言方法,对比接口实际响应与 Excel 预期值,标记测试失败或成功。
数据库断言 handle_assert_db 工具层 tools/handle_assert_db.py 执行 SQL 查询并验证数据库结果(如订单状态、用户余额),通过 assertEqual 实现数据层校验。
全局变量提取 handle_extract 工具层 tools/handle_extract.py 从接口响应中提取关键字段(如 tokenorder_id)存储为全局变量,供其他接口参数化使用(如支付依赖订单号)。
python 复制代码
"""
0、前置后置
1、参数替换:参数化
2、发送请求:鉴权的问题
3、响应结果的处理:接口返回类型不统一的问题
4、全局变量的提取:参数依赖问题
5、接口返回值的断言:校验接口层
6、数据库的断言:校验到数据层

"""
import requests
import unittest
from ddt import ddt,data

from tools.handle_assert_db import HandleAssertDb
from tools.handle_extract import HandleExtract
from tools.handle_requests import HandleRequests
from tools.handle_path import data_dir
from tools.handle_excel import HandleExcel
from tools.handle_replace import HandleReplace
from tools.handle_db import mysql
from conf.setting import assert_db_info

#获取测试用例数据
from tools.handle_reponse import HandleResponse

case_list = HandleExcel(file_name=data_dir,sheet_name="upload").get_excel_test_cases()

@ddt
class TestUpload(unittest.TestCase):

    @classmethod
    def setUpClass(cls) -> None:
        #请求头
        cls.headers = {"Content-Type":"application/json; charset=UTF-8","locale":"zh_cn"}
        cls.handle_replace = HandleReplace() #参数替换类的初始化
        cls.handle_response = HandleResponse()  # 响应结果封装
        cls.handle_requests = HandleRequests() # 请求封装
        cls.handle_extract = HandleExtract() # 全局变量提取
        cls.handle_assert_db = HandleAssertDb() # 数据库断言

    #后置处理
    @classmethod
    def tearDownClass(cls) -> None:
        mysql.db_close()

    # str 关键字不要用,excel参数要用双引号
    @data(*case_list) # [{},{}]
    def test_upload(self,case):
        # 1、参数替换,请求参数替换、删掉空格
        new_data = self.handle_replace.replace_data(data=case["data"])

        # 2、发送请求
        new_response = self.handle_requests.send_requests(method=case["method"],url=case["url"],data=new_data,is_upload=case["is_upload"])

        # 3、接口响应断言
        self.handle_response.assert_reponse(expected_data=case["expected_data"],response=new_response)

        # 4、提取全局变量
        self.handle_extract.handle_extract(extract_data=case["extract_data"],response=new_response)

        # 5、数据断言
        self.handle_assert_db.assert_db(assert_db=case["assert_db"],assert_db_info=assert_db_info)

if __name__ == '__main__':
    unittest.main()
相关推荐
小冯的编程学习之路3 小时前
【软件测试】:推荐一些接口与自动化测试学习练习网站(API测试与自动化学习全攻略)
c++·selenium·测试工具·jmeter·自动化·测试用例·postman
程序员三藏13 小时前
软件测试之功能测试详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
程序员杰哥2 天前
自动化测试基础知识详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
程序员小远2 天前
自动化测试与功能测试详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
sheepfagdng5 天前
软件测试——用例篇(2)
功能测试·单元测试·测试用例·安全性测试
waves浪游7 天前
论坛系统测试报告
测试工具·测试用例·bug·测试
测试老哥7 天前
Selenium使用指南
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
mozun20208 天前
QT:qt5调用打开exe程序并获取调用按钮控件实例2025.5.7
开发语言·数据库·qt·测试用例·控件·外部调用
程序员小远9 天前
Jenkins+Newman实现接口自动化测试
自动化测试·软件测试·python·测试工具·职场和发展·jenkins·测试用例
waves浪游9 天前
博客系统测试报告
测试工具·测试用例·bug·测试