首页 > 解决方案 > 我可以迭代银杏的测试吗

问题描述

是否可以有可变数量的测试用例。假设我有一个计算数组中值的 BeforeSuite 函数。

然后根据数组的长度,我想对每个数组元素运行一个测试。

var _ = Describe("Outer", func() {
    var stringArray []string

    BeforeSuite(func() {
        stringArray = []string{"a", "b", "c", "d", "e"} // can vary every time i run the suite
    })


    Describe("test 1", func() {
        for _, s := range stringArray {
            It("multiple tests", func() {
                print(s)
                Expect(s).ToNot(Equal("f"))
            })
        }
    })
})

我确实了解银杏的运行方式。它进行 2 次解析。首先它运行所有非规范元素,然后运行规范元素。

github https://github.com/onsi/ginkgo/issues/462上有一个适合我的用例的问题,但是 OP 被误解了,它采取了不同的方式。

标签: gobddginkgogomega

解决方案


对的,这是可能的。我以前尝试过类似的,没有任何问题。每次循环实际运行时都应该是一个新的测试用例。因此,当一个测试实际失败时,给它一个新名称以将其与其他测试区分开来。

var _ = Describe("Outer", func() {
    var stringArray []string

    BeforeSuite(func() {
        stringArray = []string{"a", "b", "c", "d", "e"} // can vary every time i run the suite
    })


    Describe("test 1", func() {
        for _, s := range stringArray {
          When("Input is "+s, func(){
             It("match the output", func() {
                print(s)
                Expect(s).ToNot(Equal("f"))
            })
          })
        }
    })
})

您当前的代码是否遇到任何问题?


推荐阅读