测试框架中实现数据驱动测试
可以通过参数化测试用例来使用多组数据执行相同的测试逻辑。下面我举例几种方式:
1、 Python - pytest + parametrize, 该框架使用pytest.mark.parametrize 装饰器实现参数化, parametrize 接收两个参数:参数名(字符串)和参数值列表(元组列表),每个元组代表一组测试数据,pytest 会自动为每组数据生成一个独立的测试用例
2、将数据外部化,可将测试数据存 JSON 文件 对应优点总结:
- 可读性强:测试用例清晰展示输入和预期输出
- 便于维护:测试逻辑和数据分离。
- 提高覆盖率:轻松添加多组测试数据。
- 可减少代码冗余:相同逻辑只需编写一次。
测试套件是组织和运行多个测试用例的机制
可按功能、模块或优先级分组测试。下面我举例几种方法:
- Python - unittest 框架, 通过
TestSuite类组合测试用例,TestSuite可手动添加测试方法, 使用TextTestRunner执行套件,输出测试结果 - JUnit 5 使用
@Suite注解和@SelectPackages/@SelectClasses定义套件,需要添加 JUnit Platform Suite 依赖Maven/Gradle, 可以使用 IDE 或命令行运行MyTestSuite类即可执行套件 - 跨语言通用模式
tests/
├── unit/ # 单元测试套件
│ ├── test_user.py
│ └── test_product.py
├── integration/ # 集成测试套件
│ ├── test_api.py
│ └── test_database.py
└── conftest.py # 测试配置(如 pytest)
测试套件优点
- 测试分组:按功能、模块或执行速度分组(
fast/slow)。 - 执行顺序:多数框架支持控制测试用例的执行顺序(
@Order注解)。 - 条件执行:可基于环境变量或配置选择性运行套件(如跳过指定库测试)。
- 测试报告聚合:测试报告可区分不同套件的通过率。
推荐阅读
软件测试/测试开发丨常见面试题与流程篇(附答案)
软件测试/测试开发丨Pytest测试用例生命周期管理-Fixture
软件测试/测试开发丨Python学习笔记之基本数据类型与操作