美文网首页
参数化测试

参数化测试

作者: 芝麻香油 | 来源:发表于2017-11-23 20:43 被阅读0次

在写测试的时候,我可能会遇到这样的情况,函数中存在下面这样两个三目运算,那么在写测试的时候为了 Cover 所有的情况,我们就需要写 4 个测试用例;每增加一个三目,测试就会增加一倍。产生大量的 Duplicate Code,每个测试明明也便成了问题。

newA = a ? "" : "1";
newB = b ? "" : "2";

那么怎样做不但能 Cover 所有的情况,还能减少 Duplicate Code 呢?

这个时候,我们就需要参数化测试

以前我们写一个测试用例如下:

@Test
public void test_1() {
  // ............
}

使用参数化测试,我们的测试用例如下:

@ParameterizedTest
@ValueSource(Strings = { "a", "b", "c"})
void test_2(String value) {
  // ......
}

在上面的测试中,@ParameterizedTest@Test 没有区别,其作用是一样的。@ValueSource 注解用来指定一个 String 数组作为参数源。

回到一开始的例子中,我们要测的是 ab 的排列组合种情况,又该怎么传参数呢?

这个时候,我们使用注解 @MethodSource,如下

static Stream<Arguments> testParams() {
    return Stream.of(
        Arguments.of(true, true, "", ""),
        Arguments.of(true, false, "", "2"),
        Arguments.of(false, true, "1", ""),
        Arguments.of(false, false, "1", "2"),
    );
}

@ParameterizedTest
@MethodSource("testParams")
void test_3(bool a, bool b, String newA, String newB) {
  // ......
}

对就这样,当我们运行 test_3 后会显示 4 个测试的运行结果。其中,test_3 中的 4 个参数分别为:a 、b、newA 以及 newB 的值。此处,由于 newA 和 newB 的值是可变的,因此我们也将其配置在参数中,否则我们依旧需要在测试代码中写和源码中一样的三目来进行判断。

参数化测试不但满足了我们测试覆盖率的需求,还满足了我们减少 Duplicate Code 的需求。当然关于参数化测试还有好几类,涉及到好几个注解,在此就不一一列举了。

以后遇到这个重复的测试再也不用复制原来的测试用例了,再也不怕各种排列组合的测试会漏掉测试用例了。


The End ~
21 天写作训练,第 18 天 ing

相关文章

  • Jest Parameterised Testing

    重复测试解决方案——参数化测试。 目录 前言 重复测试 参数化测试——数组语法 参数化测试——模板字符串语法 参数...

  • TestNg-07-参数化测试

    参数化测试就是,当测试的时候给测试方法传递参数

  • 参数化测试

    在写测试的时候,我可能会遇到这样的情况,函数中存在下面这样两个三目运算,那么在写测试的时候为了 Cover 所有的...

  • 参数化测试及 Mockito 常用方法总结

    记录一下,工作中编写单元测试的常用方法。 参数化测试 参数化是自动化测试的一种常用技巧,可以将测试代码中的某些输入...

  • pytest-09-参数化parametrize+命令行传参

    1、参数化parametrize (1)测试用例参数化使用装饰器 pytest.mark.parametrize ...

  • jmeter 参数化

    jmeter参数化 背景 进行接口,性能测试进行参数化是必然要考虑的场景,自从上次使用了jmeter进行接口测试后...

  • Pytest学习9 -参数化@pytest.mark.param

    前言 pytest允许在多个级别启用测试参数化: pytest.fixture() 允许fixture有参数化功能...

  • 接口测试流程-jmeter

    一、接口测试流程 1、参数化: excel文件参数化、数据库参数化、配置文件等 2、预处理请求(前置处理): 对请...

  • Chapter 13 参数化

    Chapter 13 参数化 pytest有如下几种参数化的方式: pytest.fixture()可以对测试函数...

  • 测试-TestNG参数化

    一、TestNG参数化测试 测试过程中,同一个测试方法我们需要不同的数据作为输入数据,代码的逻辑其实是没有变化的,...

网友评论

      本文标题:参数化测试

      本文链接:https://www.haomeiwen.com/subject/tirtbxtx.html