0

当我第一次执行功能文件时,我会在运行时更新它的字段。需要将相同字段的值传递给其他功能文件。是否可以使用 java 将一个特征文件的数据传递给另一个特征文件?

feature file 1:
scenario outline: test xxx functionality
Examples :
|user|password|
|abc|pass|

feature file2:
Scenario Outline : test yyy functionality
Examples:
|user|password|
|    |        |

在这里,我希望将特征文件 1 中的数据传递给特征文件 2,即 abc 和 pass 应该复制到特征文件 2 的示例中。请提出建议。提前致谢!

4

2 回答 2

1

不支持将值从一个功能文件传递到另一个。它会迫使你以特定的顺序执行你的场景。这是一个众所周知的反模式。您的场景应该可以按任何顺序执行,如果您希望一个场景先于另一个场景执行,这是不可能的。

那么,您应该如何在第二个功能文件中重用您的设置?简短的回答是不要。而是实现一个帮助程序,需要用户设置的功能可以用来准备被测系统。在执行之前从需要此设置的每个场景中调用此助手。这听起来可能是很多不必要的工作,但它可以让您避免很多相互依赖的场景的问题,并使您的系统在执行之间处于意外状态。

于 2017-10-28T08:47:17.250 回答
0

严格来说,您不应该将数据从一个 BDD 测试传递到另一个测试。这将违背进行独立单元 BDD 测试的目的。一般来说,软件单元测试应该是相互独立的。

话虽这么说,您当然可以从一个步骤定义中保留一些状态,然后再重用它:

@When("^I login with username \"(.*)\"$") 
public void enterUsername(String username) { 
    // do something with username

    // make a database call and insert the username in a temporary table
}

然后,在第二个功能文件中,您可以查询同一个表并检索用户名。

这可能与您的想法不完全一致,但总体思路只是在第一次测试期间保持某些状态,然后可以在第二次测试中使用。

于 2017-10-27T11:28:43.723 回答