Skip to content
🔗 分享本题
查看我的学习进度 →

28 模块 Q10 教学图:参数化测试和数据驱动怎么落地?

🧠 图解记忆:参数表描述变化,测试函数只表达稳定行为;点击图片可查看原图。

**目的:** 同一段逻辑,多组输入输出,一组用例。

落地方式:

  • pytest:@pytest.mark.parametrize
  • Java:@ParameterizedTest
  • Go:t.Run + table-driven(表驱动测试,Go 社区标准写法)

Go 表驱动示例(可运行示例):

go
func TestCalculatePrice(t *testing.T) {
    tests := []struct {
        name   string
        input  float64
        coupon float64
        want   float64
    }{
        {"normal", 100, 20, 80},
        {"zero", 0, 20, 0},
        {"over-deduct", 10, 20, 0},
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if got := CalculatePrice(tt.input, tt.coupon); got != tt.want {
                t.Errorf("got %v, want %v", got, tt.want)
            }
        })
    }
}

数据放哪: 简单数据放代码里,复杂数据放 YAML/JSON 外部文件,测试数据统一管理。

边界思维: 正常值、边界值、异常值、空值都要覆盖——说出这几个词,面试官就知道你写过真测试。