我正在尝试使用功能文件的“Scenario Outline”部分下的“Examples”。
在功能文件中,我尝试用以下格式表示它。这会按预期工作吗。
Feature: save data to db
Background: no definition
Scenario Outline: to validate file is getting read by example section
Given url 'https://www.googleapis.com/geolocation/v1/geolocate'
And param key = 'AIzaSyB2jt4BQ9McqBXAe8dYcp1CwKf0oGFlWuc'
And def dogs = read('classpath:external_table/json.feature')
And request { "homeMobileCountryCode": '<homeMobileCountryCode>'
,"homeMobileNetworkCode": '<homeMobileNetworkCode>' } dogs
When method post
And print response
Then status 200
Examples: {'datafile':'src/test/java/external_table/testdata.xlsx'}
答案 0 :(得分:0)
首先语法错误。示例表应该从下一行开始,而不是与单词&#39;示例&#39;开始。
其次,示例表中没有标题,因此要在场景步骤中将其用作占位符。
第三,在示例表中没有的场景步骤中定义了占位符&#39;&#39;&#39;
。我不熟悉空手道能够正确修改scenariooutline。请参阅此链接以了解此问题 - http://www.baeldung.com/cucumber-scenario-outline
答案 1 :(得分:0)
不,它没有按预期工作。正如其他人已经回答的那样,语法错误。
我不明白为什么在这里回答这个问题时你必须再次提出这个问题:https://stackoverflow.com/a/49727819/143475
也许你的领导者坚持要求使用Excel。根据经验,让我这样说,使用Cucumber本机示例或Karate的数据驱动功能可以更简单,您可以在其中循环JSON数组,请参阅:https://github.com/intuit/karate#the-karate-way
如果你仍然坚持要使用Excel并且你不愿意编写一个小的Java实用程序来将Excel(或CSV)转换为JSON,那么请放弃使用空手道,它不适合你。一切顺利。
答案 2 :(得分:0)
如果您真的需要处理使用CSV或Excel中的示例驱动方案,则可以使用此方法。
为您的示例命名,最好使用商家理解的名称。
编写使用该名称的单个场景 - 不要使用场景大纲
获取所有工作以获取Excel和示例的步骤,使用名称指导步骤以获取正确的示例。
让我们通过英超联赛中足球队的简单列表进行讨论,并假设您必须从Excel电子表格中动态获取这些内容
Scenario: Commpile statistics for premier league teams
Given I am working with the premier league
When I compile teams statistics
Then I should see team statistics
And there should be no errors
为了完成这项工作,我们必须将所有细节从场景推送到步骤定义,理想情况是这些步骤定义的辅助方法。所以我们最终得到像
这样的东西Given "I am working with the premier league" do
@teams = load_premier_league_teams
end
然后是辅助方法
def load_premier_league_teams
get_the_teams_from_the_spreadsheet
end
现在关于处理电子表格的所有内容都是在Cucumber以外的编程语言中处理的。
然后在When步骤中,您可以按照以下步骤为每个团队进行操作
When "I compile the teams statistics" do
@results = compile_statistics(@teams)
end
并编写另一个辅助方法
def compile_statistics(teams)
results = []
teams.each do |t|
results << compile_team_stats(t)
...
end
我们再一次将所有关于我们如何做事的细节推出黄瓜。
你可以为'应该没有错误'步骤做同样的事情,使用@results变量迭代结果并收集任何错误。
Cucumber不是编程的工具。使用这种技术,您仍然可以使用它来运行您想要的任何内容,同时保持您的场景简单快速。