繁体   English   中英

黄瓜:生成测试数据的最佳方法? 并存储以备将来使用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM