簡體   English   中英

我們如何在類級別的 testNG 中使用數據提供程序,以便它可以在類級別而不是方法級別進行迭代?

[英]How can we use Data Provider in testNG at class level, so it can iteration at class level not on method level?

我的班級有 20 個測試用例。 我想用 100 個數據集執行這個類。

例如 Iteraton1 for MyClass1 method1 - dataset = user1, password1 method2 - dataset = user1, password1 。 . 方法 20 - 數據集 = 用戶 1,密碼 1

Iteraton2 for MyClass method1 - dataset = user2, password2 method2 - dataset = user2, password2 。 . 方法 20 - 數據集 = 用戶 2,密碼 2

我嘗試使用@Factory 和 DataProvider,但它會遍歷方法。

import org.testng.annotations.Factory;

public class FactoryClass {
    
    @Factory(dataProvider="dp")
    public Object[] invodeMyTest(String name) {
        Object[] data = new Object[1];
        data[0]= new MyClass1(name);
        //data[1]= new MyClass1("qwer");
        return data;
    }
    
    @DataProvider(name = "dp")
    public static Object[][] dataProvider() throws Exception {
    String[][] names = { {"user1"} , {"user2"} };
    return names;
    }

}

@Test()
public class MyClass1 {
    private String user;

    MyClass1(String user) {
        this.user = user;
    }

    public void f1() {
        System.out.println("Inside f1 - User: " + user + (int) Thread.currentThread().getId());
        System.out.println((int) Thread.currentThread().getId());
    }

    public void f2() {
        System.out.println("Inside f2 - User: " + user + (int) Thread.currentThread().getId());
        System.out.println((int) Thread.currentThread().getId());
    }

    @Test
    public void f3() {
        System.out.println("Inside f2 - User: " + user + (int) Thread.currentThread().getId());
        System.out.println((int) Thread.currentThread().getId());
    }

}

當前執行: f1 f1 f2 f2 f3 f3

需要執行:f1 f2 f3 f1 f2 f3

有人可以幫助我們如何在類級別而不是方法級別實現迭代?

請執行以下操作:

  1. 為您的測試類創建套件 xml 文件。
  2. <test>級別或<suite>級別設置屬性group-by-instances="true"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM