[英]Cucumber: best way to generate test data? and store it for future use?
我对Cucumber自动化测试还很陌生,而且我在文档中还没有找到任何相关信息,所以我猜测这是不可能的,或者是以非常不同的方式完成的。
问题是,在机器人自动化框架中,我习惯于使用这样的变量:$ {userName},一旦设置,这些变量可以由不同的测试共享。 黄瓜有可能吗?
特定的用例是:我正在使用Java版的Cucumber,并且我想创建一个新的用户帐户,该帐户将在整个功能文件的所有场景中使用:
Scenario: Create user account
Given user navigates to the home page
And user enters username and password *(this is where I want to provide random data and have it stored for future use)*
And user clicks on the register button
Then user should see the default landing page
我始终可以使用Java在测试实现中创建随机的用户名和密码,并将它们存储在类作用域变量中,以备将来在需要它们的所有步骤中使用。 但是我不确定这是一个好习惯。 有更好的方法吗?
要生成用户名和密码,您必须自己实现,如@Eugene S所述。
要在步骤之间共享变量,最好使用依赖注入。 Cucumber-jvm支持多种DI框架,如下所示: https : //cucumber.io/docs/reference/java-di不幸的是,关于如何执行此操作的“官方”(Cucumber)文档并不多。
托马斯·桑德伯格(Thomas Sundberg)写了几篇博客文章,介绍如何使用不同的DI框架在步骤之间共享变量,包括:
随机用户和密码并不是真正必要的。 请阅读等效类测试与边界值测试
您可以为变量创建通配符:
`And user enters username and password "VAR#:username" "VAR#:password"`
`@Given("^user enters username and password$")
public void getCredentials(String userName, String password) {
userName = DataStore.getValue(userName);
password = DataStore.getValue(password);
}`
在dataStore内部,您可以从属性文件或其他任何文件中获取值。
属性文件如下所示:
VAR#:用户名=用户名VAR#:密码= 1234
不,黄瓜不允许这样的事情。 Cucumber唯一要做的就是解析您的步骤并运行匹配方法。
要实现您所描述的内容,您只需创建一个将以某种方式封装所需数据和变量的方法。 然后,您可以运行此步骤以获取它。
例如,采取您描述的步骤:
And user enters username and password
然后将要执行的方法如下所示:
@Given("^user enters username and password$")
public void getCredentials() {
//for example
userName = SomeStaticClaass.getUsername();
password = SomeStaticClaass.getPassword();
}
@Given("^user enters username and password$")
public void getCredentials() {
// for example
userName = SomeStaticClaass.getUsername();
password = SomeStaticClaass.getPassword();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.