使用数据提供者时使用Test-ng优先级

时间:2018-11-09 00:24:27

标签: java selenium testng testng-dataprovider

我正在将数据提供程序与test-ng一起使用,并且我希望特定测试针对数据收集对象中的每个元素遵循一系列步骤。

测试:

For each element in the object, validate the form can input the values

该过程因此具有以下内容:

  1. 打开网页(通过数据)
  2. 检查页面上是否存在元素
  3. 输入值

我试图在下面使用以下内容,但是,对于对象中的每个元素,它都会运行步骤1,然后在执行此步骤而不是遵循该过程之后执行步骤2。因此,我问是否可以使用test-ng做“测试步骤”方法?

如果Data中有2个值,它将执行两次Open,然后移至CheckElementExists

@Test (priority = 1, dataProvider = "Data")
public void Open(Data data) throws InterruptedException
{ 
    System.out.println("Step 1");
    this.module.open(data);
}

@Test (priority = 2, dataProvider = "Data")
public void CheckElementExists(Data data)
{
   System.out.println("TWO");
}

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用Factory类。

...
if (result) {
    // First transcription
    NSLog(@"RESULT:%@",[[result.bestTranscription.segments.firstObject] substring]);
    [recognitionTask finish];
    [self stopRecording];
}
if (error) {
    NSLog(@"Error Description : %@", error);
    [recognitionTask cancel];
    [self stopRecording];
}
...
-(void)stopRecording {

        if(audioEngine.isRunning){
            [inputNode removeTapOnBus:0];
            [inputNode reset];
            [audioEngine stop];
            [recognitionRequest endAudio];
            recognitionTask = nil;
            recognitionRequest = nil;
        }

}

您需要在testng套件xml文件中提及public class TestCase { Data data; @Factory(dataProvider = "Data") public TestCase(Data data){ this.data=data; } @Test(priority = 1) public void Open() throws InterruptedException { System.out.println("Step 1"); this.module.open(data); } @Test(priority = 2) public void CheckElementExists(Data data) { System.out.println("TWO"); } } ,然后使用xml套件运行

group-by-instance = true

答案 1 :(得分:0)

根据您的测试,它可以正常工作,因为测试是通过这种方式设计的。根据您的方案,每个步骤都是一个步骤,并且您还设置了优先级。因此,它首先对所有数据执行,然后对所有数据执行第二步。它看起来像BDD样式。您可以尝试使用诸如黄瓜,jbehave等的任何BDD框架。

如果要使用testng对每个数据重复所有步骤。然后将所有步骤组合到一个测试中,然后使用下面提供的数据提供程序遍历数据。

@Test (priority = 1, dataProvider = "Data")
public void OpenAndCheck(Data data) throws InterruptedException
{ 
    System.out.println("Step 1");
    this.module.open(data);
    System.out.println("TWO");
}