亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法使用 TestNG XML 文件使用某些選定的方法多次運行 1 個測試組?

有沒有辦法使用 TestNG XML 文件使用某些選定的方法多次運行 1 個測試組?

桃花長相依 2023-04-13 10:58:09
我有一個名為“基礎應用程序組”的組,其中包含 3 種測試方法:Test a(groups = "base application group"), Test b(groups = "base application group") AND Test c(groups = "base application group").現在,假設我只想運行 Test a() 并想從組中排除其余方法。我知道如何在 XML 文件中執行此操作?,F在真正的問題是,如果我在 XML 文件中有 10 個類并且該組應該執行 10 次,我如何才能對 XML 文件中的每個類運行該組?到目前為止,我已經嘗試在類級別使用 include 和 exclude 標記來執行此操作,但我不想在我的 XML 文件中執行 10 次。我也嘗試過 tag 和 Meta Group,但這并沒有給我想要的輸出。這是我的 xml 代碼 atm:<suite name ="Footer Suite" ><test name ="Footer Tests" verbose ="2" >    <classes>        <class name ="it.org.techtime.jira.easysso.seleniumtests.footertests.MainAdminScreenTests">            <methods>                <exclude name ="Test b"/>                <exclude name ="Test c"/>            </methods>        </class>        <class name ="it.org.techtime.jira.easysso.seleniumtests.footertests.MainAdminScreenTests">            <methods>                <exclude name ="Test b"/>                <exclude name ="Test c"/>            </methods>        </class>    </classes></test>我希望“基礎應用程序組”運行 10 次,并且只希望 Test a() 從該組運行。不要忘記我想從 XML 文件實現這一點。
查看完整描述

1 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

你不能用 TestNG 開箱即用。基本上沒有一種機制可以多次迭代屬于一個組的一堆測試n。

做到這一點的唯一方法是手動復制標簽<test>,正如您指出的那樣,這是一個手動過程,每次都需要更改和簽入套件 xml。

總而言之,TestNG 仍然允許您通過執行以下操作來做到這一點。

  1. 確保你依賴于 TestNG 7.0.0-beta7(截至今天最新)

  2. 構建一個實現,org.testng.IAlterSuiteListener您可以使用它以編程方式更改您的套件文件并添加/刪除/更新其中的任何內容。

這是一個執行您所要求的偵聽器的示例。

import java.util.List;

import org.testng.IAlterSuiteListener;

import org.testng.ITestContext;

import org.testng.TestListenerAdapter;

import org.testng.xml.XmlClass;

import org.testng.xml.XmlGroups;

import org.testng.xml.XmlSuite;

import org.testng.xml.XmlTest;


public class MultiRunner extends TestListenerAdapter implements IAlterSuiteListener {


  @Override

  public void alter(List<XmlSuite> suites) {

    XmlSuite xmlsuite = suites.get(0);

    XmlTest xmltest = xmlsuite.getTests().get(0);

    XmlGroups xmlgroups = xmltest.getXmlGroups();

    List<XmlClass> xmlclasses = xmltest.getClasses();

    int iteration = Integer.parseInt(System.getProperty("iterations", "2"));

    String name = xmltest.getName();

    for (int i=1; i<= iteration; i++) {

      XmlTest test = new XmlTest(xmlsuite);

      test.setName(name + "_" + i);

      test.setGroups(xmlgroups);

      test.setXmlClasses(xmlclasses);

    }

  }


  @Override

  public void onStart(ITestContext testContext) {

    System.err.println("Commencing execution of [" + testContext.getName() + "]");

  }

}


查看完整回答
反對 回復 2023-04-13
  • 1 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號