【20230417每日面经】如何在测试框架中实现数据驱动测试? 如何在测试框架中实现测试套件?

每日面经

  • 考察点:测试框架

  • 难度:简单

  • 题目: 如何在测试框架中实现数据驱动测试? 如何在测试框架中实现测试套件?

ps:每周一公布上周所有题目答案

这个怎么没有答案呢

一、测试框架中实现数据驱动测试,可以通过参数化测试用例来使用多组数据执行相同的测试逻辑。下面我举例几种方式:
1, Python - pytest + parametrize, 该框架使用pytest.mark.parametrize 装饰器实现参数化, parametrize 接收两个参数:参数名(字符串)和参数值列表(元组列表),每个元组代表一组测试数据,pytest 会自动为每组数据生成一个独立的测试用例
2.将数据外部化,可将测试数据存 JSON 文件
对应优点总结:

  1. 可减少代码冗余:相同逻辑只需编写一次。
  2. 提高覆盖率:轻松添加多组测试数据。
  3. 便于维护:测试逻辑和数据分离。
  4. 可读性强:测试用例清晰展示输入和预期输出
    二、测试套件是组织和运行多个测试用例的机制,可按功能、模块或优先级分组测试。下面我举例几种方法:
  5. Python - unittest 框架, 通过 TestSuite 类组合测试用例, TestSuite 可手动添加测试方法, 使用 TextTestRunner 执行套件,输出测试结果
  6. JUnit 5 使用 @Suite 注解和 @SelectPackages /@SelectClasses 定义套件,需要添加 JUnit Platform Suite 依赖Maven/Gradle, 可以使用 IDE 或命令行运行 MyTestSuite 类即可执行套件
  7. 跨语言通用模式
tests/
├── unit/           # 单元测试套件
│   ├── test_user.py
│   └── test_product.py
├── integration/    # 集成测试套件
│   ├── test_api.py
│   └── test_database.py
└── conftest.py     # 测试配置(如 pytest)

测试套件优点

  1. 测试分组:按功能、模块或执行速度分组(fast/slow)。
  2. 执行顺序:多数框架支持控制测试用例的执行顺序(@Order 注解)。
  3. 条件执行:可基于环境变量或配置选择性运行套件(如跳过指定库测试)。
  4. 测试报告聚合:测试报告可区分不同套件的通过率。