метка метаданных в файле объектов не может быть разрешена в qaf 2.1.13 - PullRequest
0 голосов
/ 05 сентября 2018
  1. config.xml

xml run configuration

  1. providerclass:

    public class CustomDataProdvider {
       @DataProvider(name="my-custom-dp")
       public static Object[][] dataProviderForBDD(){
    
          Map<Object, Object> rec1 = Maps.newHashMap();
          rec1.put("fruit", "grapes");
          rec1.put("color", "green");
    
          Map<Object, Object> rec2 = Maps.newHashMap();
          rec2.put("fruit", "banana");
          rec2.put("color", "yellow");
    
          return new Object[][]{ {rec1},{rec2}};
      }
    
  2. особенность:

    @TestForTest
    SCENARIO : Custom Data provider Example
    META-DATA: {"dataProvider":"my-custom-dp", "dataProviderClass":"com.qmetry.qaf.example.CustomDataProvider", "description":"Data driven test that uses custom data provider"}
       Given I am on fruits and colors activity
       When i select '${fruit}'
       Then the color should be '${color}'
    END
    
  3. шаги:

    @MetaData(value = "{'groups':['smoke']}")
    @QAFTestStepProvider
    public class TestDataProdivider {
    
       @QAFTestStep(description = "I am on fruits and colors activity")
       public void test(){
          System.out.println("I am on fruits and colors activity");
       }
    
       @QAFTestStep(description = "i select {fruit}")
       public void testfruit(String fruit){
          System.out.println(fruit);
       }
    
       @QAFTestStep(description = "the color should be {color}")
       public void testcolor(String color){
          System.out.println(color);
       }
    }
    
  4. результат:

    @QAFTestStep(description="META-DATA: {0}")
    public void mETADATA(Map<Object,Object> mapObj0){
       //TODO: remove NotYetImplementedException and call test steps
       throw new NotYetImplementedException();
    }
    

    Тест игнорируется.

1 Ответ

0 голосов
/ 05 сентября 2018

Вы используете GherkinScenarioFactory, который ожидает bdd в синтаксисе огурца. В gherkin Meta-data не поддерживается, но поддерживается в qaf-bdd. Вы должны использовать com.qmetry.qaf.automation.step.client.text.BDDTestFactory. Ваш bdd-файл, скажем, suite1.bdd, должен выглядеть ниже для работы с BDDTestFactory.

SCENARIO : Custom Data provider Example
META-DATA: {"dataProvider":"my-custom-dp", "dataProviderClass":"com.qmetry.qaf.example.CustomDataProvider", "description":"Data driven test that uses custom data provider","groups":{"TestForTest","smoke"}}
   Given I am on fruits and colors activity
   When i select '${fruit}'
   Then the color should be '${color}'
END

Если вы сравните с оригиналом, вы заметите, что @TestForTest переместил метаданные, чтобы сделать ваш сценарий совместимым с qaf-bdd. Убедитесь, что ваш bdd-файл имеет расширение .bdd для работы с BDDTestFactory.

Ваш конфигурационный файл должен выглядеть следующим образом:

<suite name="QAF-Demo" verbose="0">
<test name="BDD Tests">
   <parameter name="step.provider.pkg" value="com.qmetry.qaf.example.steps" />
   <parameter name="scenario.file.loc" value="scenarios" />
   <groups>
     <run>
        <include name="TestForTest"/>
     </run>
   </groups>
   <classes>
      <class name="com.qmetry.qaf.automation.step.client.text.BDDTestFactory" />
   </classes>
</test>
</suite>

Несколько замечаний:

  • вы пытаетесь добавить группы к шагам, помещая @MetaData(value = "{'groups':['smoke']}") в класс определения шага. Это не имеет никакого смысла. Группы должны быть назначены тестовому сценарию / сценарию, а не шагу (шагам).
  • Более того, вам не нужно помещать @QAFTestStepProvider в класс определения шага, потому что вы используете @QAFTestStep для пометки метода как шага.

Итак, ваш класс определения шага должен выглядеть следующим образом:

public class TestDataProdivider {

   @QAFTestStep(description = "I am on fruits and colors activity")
   public void test(){
      System.out.println("I am on fruits and colors activity");
   }

   @QAFTestStep(description = "i select {fruit}")
   public void testfruit(String fruit){
      System.out.println(fruit);
   }

   @QAFTestStep(description = "the color should be {color}")
   public void testcolor(String color){
      System.out.println(color);
   }
} 
...