您可以在 Cucumber 功能 "Examples:" 部分使用外部资源吗?
Can you use external resources in Cucumber feature "Examples:" section?
这是我的一个场景测试功能文件
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
我想使用包含数据的文件路径 table 但我收到 Cucumber gherkins builder 错误消息。
error_modal
是否可以在“Examples:”中使用外部资源?
这目前是不可能的。我们正在讨论如何在 this issue 中实施。欢迎加入那边的讨论。
Cucumber 现在不支持任何外部文件。
这不可能。但是,您可以尝试在黄瓜代码中使用属性文件并对其进行初始化。
但是同样,您不能将所有数据都保存在属性文件中
解决这类问题的最佳方法是编写更好的场景,将细节抽象出来。
但首先你需要回答一些问题。
为什么要测试不同用户丢失后能否登录系统?
测试额外用户有什么好处?
假设你确实有充分的理由来测试一组用户,你可以这样写
Scenario: Foo users can sign in
Given Foo users are registered
When Foo users sign in
Then Foo users should have signed in
并将有关如何执行此操作的所有详细信息推送到步骤定义中。这将允许您执行
之类的操作
Given 'Foo users are registered' do
@foo_users = load_foo_users(path: src/test/resources/datatables/logind_data.table)
@foo_users.each do |user|
register_user(user: user)
end
end
您可以在 when 步骤中循环用户并将结果记录在另一个全局中。然后检查 Then 步骤中的结果。
此处使用了一些通用技术
- 将如何下推测试堆栈(功能、step_defs、helper_methods、应用程序代码)
- 使用全局变量在步骤之间进行通信
- 在场景中使用抽象简单的语言
- 命名构造并在场景中按名称引用它们。不要定义它们的内容。
这是我的一个场景测试功能文件
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
我想使用包含数据的文件路径 table 但我收到 Cucumber gherkins builder 错误消息。 error_modal
是否可以在“Examples:”中使用外部资源?
这目前是不可能的。我们正在讨论如何在 this issue 中实施。欢迎加入那边的讨论。
Cucumber 现在不支持任何外部文件。 这不可能。但是,您可以尝试在黄瓜代码中使用属性文件并对其进行初始化。 但是同样,您不能将所有数据都保存在属性文件中
解决这类问题的最佳方法是编写更好的场景,将细节抽象出来。
但首先你需要回答一些问题。
为什么要测试不同用户丢失后能否登录系统? 测试额外用户有什么好处?
假设你确实有充分的理由来测试一组用户,你可以这样写
Scenario: Foo users can sign in
Given Foo users are registered
When Foo users sign in
Then Foo users should have signed in
并将有关如何执行此操作的所有详细信息推送到步骤定义中。这将允许您执行
之类的操作Given 'Foo users are registered' do
@foo_users = load_foo_users(path: src/test/resources/datatables/logind_data.table)
@foo_users.each do |user|
register_user(user: user)
end
end
您可以在 when 步骤中循环用户并将结果记录在另一个全局中。然后检查 Then 步骤中的结果。
此处使用了一些通用技术
- 将如何下推测试堆栈(功能、step_defs、helper_methods、应用程序代码)
- 使用全局变量在步骤之间进行通信
- 在场景中使用抽象简单的语言
- 命名构造并在场景中按名称引用它们。不要定义它们的内容。