您可以在黄瓜功能的“示例:”部分中使用外部资源吗?

问题描述

这是我的一种情况的测试功能文件

Feature: My test feature

Scenario Outline: I want user to be logged into MyPage

When user goes to MyPage
And user fills "<test_login>" login field
And user fills "<test_password>" password field
And user clicks Login button
Then user should be logged in

Examples:
|test_login|test_password|
|login1234|password1234|

我想将“示例:”部分修改为类似的内容

Examples:
src/test/resources/datatables/logind_data.table

我想使用包含数据表的文件路径,但收到黄瓜小黄瓜生成错误消息。 error_modal

是否可以在“示例:”中使用外部资源?

解决方法

目前无法实现。我们正在讨论this issue中的实现方法。随时加入那里的对话。

,

黄瓜现在不支持任何外部文件。 这不可能。但是,您可以尝试在黄瓜代码中使用属性文件并对其进行初始化。 但是同样,您不能将所有数据保留在属性文件中

,

解决这类问题的最佳方法是编写更好的方案以抽象出细节。

但是首先,您需要回答一些问题。

您为什么需要测试丢失的其他用户可以登录系统? 测试额外的用户有什么好处?

假设您确实有充分的理由来测试一组用户,则可以编写类似

的内容
library(grid)
library(rasterVis)

vectorplot(r,par.settings=list(clip = list(panel = FALSE),layout.widths = list(axis.key.padding = 3)),narrows = 500,length=0.1,lwd.arrows=0.4) +
    layer(panel.text(2.05,-2,substr(R.version.string,1,15),adj = c(0,1),srt = 90))

并将有关如何执行此操作的所有详细信息放入步骤定义中。这将使您可以做类似的事情

Scenario: Foo users can sign in
  Given Foo users are registered
  When Foo users sign in
  Then Foo users should have signed in

您可以在when步骤中环绕用户,并将结果记录在另一个全局变量中。然后在“然后”步骤中检查结果。

这里使用了两种通用技术

  • 按下测试堆栈的方式(功能,step_defs,helper_methods,应用程序代码)
  • 使用全局变量在步骤之间进行通信
  • 在场景中使用抽象的简单语言
  • 命名构造,并在方案中按名称引用它们。不要定义其内容。