黄瓜使用@Transform标记,如何针对不同的行和列多次运行测试

时间:2018-12-17 07:11:54

标签: selenium selenium-webdriver cucumber cucumber-java

我正在从JSON文件读取测试数据。我得到了以下数据的形式 数据表,如下所示。

|Key         |Key         |Key         |
|Firstdataset|firstdataset|firstDataSet|    
|seconddataSet|seconddataSet|SecondDataSet|

现在在步骤定义类中,我正在使用以下代码

List<Map<String,String>> data2=table.asMaps(String.class, String.class);
            System.out.println(data2);
            for(int i=0;i<data2.size();i++) {
    data2.get(i).get("ScenarioRun"));
 }

Map有2个测试数据集行。 我希望我的场景执行两次,每行测试数据使用一次。for循环仅显示数据而不运行两次测试场景。 如果我使用场景提纲如何提及动态行?请帮忙。

1 个答案:

答案 0 :(得分:0)

我不明白你的问题。会尝试回答我所理解的。 首先:

 |Key         |Key         |Key         |
|Firstdataset|firstdataset|firstDataSet|    
|seconddataSet|seconddataSet|SecondDataSet|

密钥是您地图上的密钥,不能重复。因此,上面的语句应类似于:

|Key1         |Key2         |Key3         |
    |Firstdataset|firstdataset|firstDataSet|    
    |seconddataSet|seconddataSet|SecondDataSet|

第二:

List<Map<String,String>> data2=table.asMaps(String.class, String.class);
            System.out.println(data2);
            for(int i=0;i<data2.size();i++) {
    data2.get(i).get("ScenarioRun"));
 }

这应该是:

List<Map<String,String>> data2=table.asMaps(String.class, String.class);
            System.out.println(data2);
            for(int i=0;i<data2.size();i++) {
    data2.get(i).get("**Key1**"));
 }

我们希望选择与之对应的值,对于第一次迭代,该值为 Firstdataset ,对于第二次迭代,该值为 seconddataSet

要在“方案”概述中使用动态值,可以使用尖括号,就像在特征文件中的其他任何地方一样。 例如:

|Key1         |Key2         |Key3         |
|<dataset>|firstdataset|firstDataSet|    
|seconddataSet|seconddataSet|SecondDataSet|

Examples:
|dataset|
|firstdataSet|