我对 Cucumber 自动化测试仍然很陌生,我在文档中没有找到任何关于这一点的内容,所以我猜要么是不可能的,要么是以非常不同的方式完成的。
问题是,在机器人自动化框架中,我习惯于使用这样的变量:${userName},一旦设置,这些变量就可以被不同的测试共享。这在cucumber中可能吗?
具体的用例是:我正在使用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 在测试实现中创建随机用户名和密码,并将它们存储在类范围的变量中,以便将来在需要它们的所有步骤中使用。但我不确定这是一个好的做法。有没有更好的方法?
不,cucumber不允许这样的事情。Cucumber 唯一要做的就是解析您的步骤并运行匹配的方法。
为了实现您所描述的,您可以创建一个方法,以某种方式封装您所需的数据和变量。然后您可以运行此步骤以获得它。
例如,执行您描述的步骤:
And user enters username and password
那么将要执行的方法将类似于:
@Given("^user enters username and password$")
public void getCredentials() {
//for example
userName = SomeStaticClaass.getUsername();
password = SomeStaticClaass.getPassword();
}
随机用户和密码并不是真正必要的。请阅读等价类测试与边界值测试
您可以为变量创建通配符:
`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);
}`
在数据存储中,您可以从属性文件或其他任何内容中获取值。
属性文件可能如下所示:
VAR#:用户名=用户名VAR#:密码=1234
要生成用户和密码,您必须自己实现,正如@Eugene S。
要在步骤之间共享变量,最好使用依赖注入。Cucumber-jvm支持多个DI框架,如下所列:https://cucumber.io/docs/reference/java-di不幸的是,关于如何做到这一点,没有很多“官方”(Cucumber)留档。
Thomas Sundberg写了几篇关于如何使用不同DI框架在步骤之间共享变量的博客文章,包括:
问题内容: 我希望在学习快速的过程中开发一个库存/物品库存应用程序。它基本上是具有项目名称,数量和位置的东西。 例如。 25号工作货车灯泡 开关,6,仓库 当用户输入此数据并按下按钮时,什么是存储此数据并在以后检索的最佳方法。我知道我可以将此附加到数组并显示该数组,但是如果应用程序关闭,该怎么办? 我应该在学习数据库存储吗?我可以将数据保存到手机吗? 问题答案: 如果要存储的数据很少且不敏感,则可
问题内容: 在MySQL数据库中存储IP地址的最佳字段类型和长度是什么? IPv6呢? 问题答案: 将IP存储为,然后使用和功能存储/检索IP地址。 样例代码:
问题内容: 我的角度应用程序有2个控制器。我的问题是,当用户离开页面时,控制器不会保留数据。 如何将所选控制器上的选定数据存储到数据存储中,以便可以在其他控制器之间使用? 问题答案: 选项1-自定义 您可以利用专用的角度服务在控制器之间存储和共享数据(服务是单实例对象) 服务定义 在多个控制器中的用法 选项2-HTML5 您可以使用内置的浏览器本地存储并从任何地方存储数据 写作 读 看看这个很棒的
问题内容: 我上了一堂课,想跟踪学生的统计数据。我打算稍后制作一个GUI来处理这些数据。 我的主要问题是:保存和以后检索此数据的最佳方法是什么? 我已经读过关于pickle和JSON的文章,但是我并没有真正了解它们的工作方式(尤其是关于它们如何保存数据的信息,例如哪种格式和位置)。 问题答案: 对于持久性数据(存储有关学生的信息),数据库是一个不错的选择。如前所述,Python附带了Sqlite3
“...如果这不可行,RFC4122建议使用命名空间变体,如类型5 UUID。” 我计划使用Java生成UUID,并引用了API https://docs.oracle.com/javase/8/docs/API/Java/util/UUID.html 通过维基百科:
问题内容: 我正在创建一个Web API,需要一种很好的方法来非常快速地生成一些格式正确的xml。我找不到在python中执行此操作的任何好方法。 注意:一些库看起来很有前途,但要么缺少文档,要么仅输出到文件。 问题答案: 使用lxml: 输出: 有关更多信息,请参见教程。