【问题标题】:Spock: How to input string values in a data pipeSpock:如何在数据管道中输入字符串值
【发布时间】:2016-09-07 09:49:01
【问题描述】:

我搜索了很多,但没有找到一个在数据管道中使用字符串值填充输入数据的示例。

有人可以举个例子吗?

我用过:

[a,b,c] << ["aaa","bbb","ccc"] 

但出现错误。

【问题讨论】:

    标签: testing groovy automation spock geb


    【解决方案1】:

    简单地将多个值分配给多个变量是这样完成的:

    def (a, b, c) = ["aaa", "bbb", "ccc"]
    

    但是像这样的 Spock 输入数据会更像这样:

    where:
    a << [3, 7, 0]
    b << [5, 0, 0]
    c << [5, 7, 0]
    

    http://spockframework.org/spock/docs/1.0/data_driven_testing.html

    【讨论】:

      【解决方案2】:

      假设您要运行 3 次测试,第一次运行分配相同的变量“aaa”,第二次分配“bbb”,第三次分配“ccc”,您可以这样做:

      where:
      variableName << ["aaa","bbb","ccc"] 
      

      这是我的一个项目的完整示例:

      class PhoneNumberConverterSpec extends Specification {
      
          private PhoneNumberConverter phoneNumberConverter = PhoneNumberConverter.instance
      
          @Unroll('convert invalid phone number #input')
          def 'attempt to convert invalid phone numbers to canonical format'() {
      
              expect:
              !phoneNumberConverter.canConvert(input)
      
              where:
              input << [null, 6, '353', '9999999']
          }
      }
      

      另一方面,如果您只想运行一次测试并将值分配给 3 个不同的变量,那么使用数据管道确实没有意义,只需像在常规 Groovy 代码中那样声明和分配变量即可。

      【讨论】:

        猜你喜欢
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2019-08-17
        • 2022-06-16
        • 2017-11-03
        • 2011-05-24
        • 2017-12-22
        • 1970-01-01
        相关资源
        最近更新 更多