在goDog中执行其余功能文件之前,如何执行特定功能文件?

在goDog中执行其余功能文件之前,如何执行特定功能文件?,go,bdd,gherkin,Go,Bdd,Gherkin,在实现其余的测试用例之前,我有一些数据设置。我已经将执行测试用例之前需要执行的所有数据设置分组到一个功能文件中 如何确保在goDog framework中执行任何其他功能文件之前执行此数据设置功能文件?我理解您的问题,您正在寻找一种在运行功能/场景之前运行一些设置说明的方法。问题在于,根据设计,场景和功能是孤立的。确保在场景运行之前执行某些操作的方法是定义Background部分。好吧,你不能在不同的功能上应用相同的背景。场景按功能分组,每个功能可以指定在每个场景之前执行的背景。我只需复制粘贴您

在实现其余的测试用例之前,我有一些数据设置。我已经将执行测试用例之前需要执行的所有数据设置分组到一个功能文件中


如何确保在goDog framework中执行任何其他功能文件之前执行此数据设置功能文件?

我理解您的问题,您正在寻找一种在运行功能/场景之前运行一些设置说明的方法。问题在于,根据设计,场景和功能是孤立的。确保在场景运行之前执行某些操作的方法是定义
Background
部分。好吧,你不能在不同的功能上应用相同的背景。场景按功能分组,每个功能可以指定在每个场景之前执行的
背景。我只需复制粘贴您的设置内容到您需要的任何地方:

Background:
  Given I have the base data:
    | User | Status   | other fields |
    | Foo  | Active   | ...          |
    | Bar  | Disabled | ...          |
如果设置中涉及大量步骤,您可以定义一个步骤,然后将其展开以运行所有“后台”步骤,如下所示:

Scenario: test something
Given my test setup runs
然后执行
我的测试设置运行
,如下所示:

s.Step(`^my test setup runs$`, func() godog.Steps {
    return godog.Steps{
                   "user test data is loaded", 
                   "other things are set up",
                   "additional data is updated",
                   "update existing records",
                   "setup was successful",
            }
})
这应该行得通

当然,为了避免在我的测试设置运行时必须使用该
启动每个场景,您可以使用以下内容启动每个功能文件:

Background:
   Given my test setup runs

这将确保在每个场景之前执行设置。结果将是:在每个功能文件的开始处增加两行,然后您就可以开始了。

您在这里提到的案例使用了背景,我已经读过了,我们应该尽量使其尽可能小。我有一个特性文件,在执行任何测试用例之前,它有许多步骤要执行。我的要求是,在执行任何其他功能文件之前,我需要从该文件加载数据。我仔细查看了答案,发现cucumber按字母顺序执行文件,所以我可以命名该文件,使其始终先执行。但我不确定采用这种方法是否会继续。还有其他方法吗?@Shubham它按字母顺序执行,但不在场景之间保持状态,因此每次都必须设置所需的状态。这正是背景存在的原因。如果您设置了太多的状态,那么恐怕问题更多地与您尝试测试的内容有关。Cucumber在集成测试方面非常出色,但要测试更全面的端到端场景,可能会有更好的工具,或者您可能希望使用后台加载基本状态的数据库感谢您澄清了我对文件命名的疑问。我将只使用后台实现它。