显示带有标签的帖子 测试NG. 显示所有帖子
显示带有标签的帖子 测试NG. 显示所有帖子

2018年8月30日,星期四

使用TestNG进行多浏览器或跨浏览器测试

在多个浏览器中测试您的Web应用程序非常重要。每种浏览器以不同的方式处理代码,因此用户体验可能会因测试人员的不同而有所差异,因此,我们有责任确保我们的应用程序在大多数常用的浏览器(如firefox,chrome和IE)上都能正常运行。 
测试NG允许我们使用TestNG参数自动进行多浏览器测试。在本文中,我们将详细介绍如何通过一个简单的示例来实现这一目标。

例。

1.创建一个简单的测试脚本。

2.配置它以将“浏览器类型”作为参数传递。

package test;


import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;
 
import org.openqa.selenium.firefox.FirefoxDriver;
 
import org.openqa.selenium.ie.InternetExplorerDriver;
 
import org.testng.annotations.AfterClass;
 
import org.testng.annotations.BeforeClass;
 
import org.testng.annotations.Parameters;
 
import org.testng.annotations.Test;
 
public class MultiBrowserTest {
 
 public WebDriver driver;
 
  @Parameters("browser")
 
  @BeforeClass
 
  // Passing Browser parameter from 测试NG xml
 
  public void beforeTest(String browser) {
 
  // If the browser is Chrome, then do this
 
  if(browser.equalsIgnoreCase("chrome")) {
 
   System.setProperty("webdriver.ie.driver", "C:\\Softwares\\chromedriver_win32\\chromedriver.exe");
   
   driver = new InternetExplorerDriver();;
 
  // If browser is IE, then do this   
 
  }else if (browser.equalsIgnoreCase("ie")) { 
 
   // Here I am setting up the path for my IEDriver
 
   System.setProperty("webdriver.ie.driver", "D:\\QA\\drivers\\IEDriverServer.exe");
 
   driver = new InternetExplorerDriver();
 
  } 
 
  // Doesn't the browser type, lauch the Website
 
  driver.get("http://www.yubo666.com"); 
 
  }
 
  // Once Before method is completed, Test method will start
 
  @Test 
  public void 搜索() throws Exception {
    
   Thread.sleep(5000);
      driver.findElement(By.xpath("*//input[@class='search-field']")).sendKeys("appium");
      
      driver.findElement(By.xpath("*//input[@class='search-submit']")).click();
 
      driver.quit();
 
 
 }  
 
  @AfterClass public void afterTest() {
 
  driver.quit();
 
 }
 
}

3.在testng.xml中提及浏览器类型的详细信息


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test name="ChromeTest">
 
 <parameter name="browser" value="chrome" />
 
 <classes>
 
 <class name="test.MultiBrowserTest" />
 
 </classes>
 
 </test>
 
 <test name="IETest">
 
 <parameter name="browser" value="ie" />
 
 <classes>
 
 <class name="test.MultiBrowserTest" />
 
 </classes>
 
 </test> <!-- Test -->
</suite> <!-- Suite -->

4.以TestNG Suit的身份运行。

并行执行- 考虑要在多个浏览器上并行执行测试,然后对testng.xml稍作更改即可实现


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="tests">
  <test name="ChromeTest">
 
 <parameter name="browser" value="chrome" />
 
 <classes>
 
 <class name="test.MultiBrowserTest" />
 
 </classes>
 
 </test>
 
 <test name="IETest">
 
 <parameter name="browser" value="ie" />
 
 <classes>
 
 <class name="test.MultiBrowserTest" />
 
 </classes>
 
 </test> <!-- Test -->
</suite> <!-- Suite -->

.

2018年8月28日,星期二

用Excel

当我们要创建遵循数据驱动的方法并创建框架时,最好的方法是使用Excel存储我们的数据,并且可以使用在上一篇文章中看到的数据提供程序将数据作为参数传递。

逐步过程以使用TestNg数据提供程序实施Excel。

步骤1:使用创建一个登录应用程序的测试用例。

第2步: 创建一个测试数据表。

步骤3:建立要开启的功能&从Excel读取数据

步骤4:创建一个TestNg测试用例,以使用数据提供者从Excel接受数据。

步骤5:针对测试数据文件中的测试用例名称运行测试。

使用Apache POI库从Excel工作表中读取数据-

下面是我们的代码,用于打开Excel工作表并在Selenium测试脚本中从中读取数据。为此,我们使用Apache POI库,该库允许我们使用Java读取,创建和编辑Microsoft Office文档。我们将用于从Excel工作表读取数据的类和方法位于org.apache.poi.hssf.usermodel中。

1.下载Apache POI  from the link http://poi.apache.org/ 并将其添加到您的项目构建路径中。

2.使用以下代码从Excel文件读取数据。


package test;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelUtils {

 private static XSSFSheet ExcelWSheet;

 private static XSSFWorkbook ExcelWBook;

 private static XSSFCell Cell;

 private static XSSFRow Row;

 public static void setExcelFile(String Path,String SheetName) throws Exception {
   
     try {

    // Open the Excel file

    FileInputStream ExcelFile = new FileInputStream(Path);

    // Access the required test data sheet

    ExcelWBook = new XSSFWorkbook(ExcelFile);

    ExcelWSheet = ExcelWBook.getSheet(SheetName);

    } catch (Exception e){

     throw (e);

    }

  }
 public static Object[][] getTableArray(String FilePath, String SheetName) throws Exception {

  String[][] tabArray = null;

  try {

   FileInputStream ExcelFile = new FileInputStream(FilePath);

   // Access the required test data sheet

   ExcelWBook = new XSSFWorkbook(ExcelFile);

   ExcelWSheet = ExcelWBook.getSheet(SheetName);

   int startRow = 1;

   int startCol = 1;

   int ci, cj;

   int totalRows = ExcelWSheet.getLastRowNum();

   // you can write a function as well to get Column count

   int totalCols = 2;

   tabArray = new String[totalRows][totalCols];

   ci = 0;

   for (int i = startRow; i <= totalRows; i++, ci++) {

    cj = 0;

    for (int j = startCol; j <= totalCols; j++, cj++) {

     tabArray[ci][cj] = getCellData(i, j);

     System.out.println(tabArray[ci][cj]);

    }

   }

  }

  catch (FileNotFoundException e) {

   System.out.println("Could not read the Excel sheet");

   e.printStackTrace();

  }

  catch (IOException e) {

   System.out.println("Could not read the Excel sheet");

   e.printStackTrace();

  }

  return (tabArray);

 }

 public static String getCellData(int RowNum, int ColNum) throws Exception {
 
   try{
 
    Cell = ExcelWSheet.getRow(RowNum).getCell(ColNum);
 
    int dataType = Cell.getCellType();
 
    if  (dataType == 3) {
 
     return "";
 
    }else{
 
     String CellData = Cell.getStringCellValue();
 
     return CellData;
    }
 
    }catch (Exception e){
 
    System.out.println(e.getMessage());
 
    throw (e);
 
    }
 
   
 
  }
 public static String getTestCaseName(String sTestCase)throws Exception{
   
  String value = sTestCase;

  try{

   int posi = value.indexOf("@");

   value = value.substring(0, posi);

   posi = value.lastIndexOf("."); 

   value = value.substring(posi + 1);

   return value;

    }catch (Exception e){

   throw (e);

     }

  }

 public static int getRowContains(String sTestCaseName, int colNum) throws Exception{

  int i;

  try {

   int rowCount = ExcelUtils.getRowUsed();

   for ( i=0 ; i<rowCount; i++){

    if  (ExcelUtils.getCellData(i,colNum).equalsIgnoreCase(sTestCaseName)){

     break;

    }

   }

   return i;

    }catch (Exception e){

   throw(e);

   }

  }

 public static int getRowUsed() throws Exception {

   try{

    int RowCount = ExcelWSheet.getLastRowNum();

    return RowCount;

   }catch (Exception e){

    System.out.println(e.getMessage());

    throw (e);

   }

  }
 public static Object[][] getTableArray(String FilePath, String SheetName, int iTestCaseRow)    throws Exception
  
 {   

    String[][] tabArray = null;

    try{

     FileInputStream ExcelFile = new FileInputStream(FilePath);

     // Access the required test data sheet

     ExcelWBook = new XSSFWorkbook(ExcelFile);

     ExcelWSheet = ExcelWBook.getSheet(SheetName);

     int startCol = 1;

     int ci=0,cj=0;

     int totalRows = 1;

     int totalCols = 1;

     tabArray=new String[totalRows][totalCols];

      for (int j=startCol;j<=totalCols;j++, cj++)

      {

       tabArray[ci][cj]=getCellData(iTestCaseRow,j);

       System.out.println(tabArray[ci][cj]);

      }

  }

  catch (FileNotFoundException e)

  {

   System.out.println("Could not read the Excel sheet");

   e.printStackTrace();

  }

  catch (IOException e)

  {

   System.out.println("Could not read the Excel sheet");

   e.printStackTrace();

  }

  return(tabArray);

 }
    }

 3.使用要传递给测试用例的数据作为参数创建excelfile。


4.使用Excel中的参数更新测试用例。


package test;


import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
 
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
 
import org.testng.annotations.Test;
 
import org.testng.annotations.BeforeMethod;
 
import org.testng.annotations.AfterMethod;
 
import org.testng.annotations.DataProvider;
 

 
public class TestCaseExcelData {
 
 private String sTestCaseName;
 
 private int iTestCaseRow;
 
 WebDriver driver;
 
  @BeforeMethod
 
  public void beforeMethod() throws Exception {
 
   System.setProperty("webdriver.chrome.driver", "C:\\Softwares\\chromedriver_win32\\chromedriver.exe");
  
   driver=new ChromeDriver();
      
      driver.get("http://www.yubo666.com");
 
      Thread.sleep(5000);
  } 
 
  @Test(dataProvider = "搜索")
  
  public void test(String 搜索text) throws Exception {
 
   
      driver.findElement(By.xpath("*//input[@class='search-field']")).sendKeys(搜索text);
      
      driver.findElement(By.xpath("*//input[@class='search-submit']")).click();
 
      
  }
 
  @AfterMethod
 
  public void afterMethod() {
 
    driver.close();
 
  }
 
  @DataProvider
 
  public Object[][] 搜索() throws Exception{
 
     // Setting up the Test Data Excel file
 
   ExcelUtils.setExcelFile("C:\\Users\\manojjai\\Documents\\dataprovider.xlsx","Sheet1");
 
   sTestCaseName = this.toString();
 
    // From above method we get long test case name including package and class name etc.
 
    // The below method will refine your test case name, exactly the name use have used
 
    sTestCaseName = ExcelUtils.getTestCaseName(this.toString());
 
     // Fetching the Test Case row number from the Test Data Sheet
 
     // Getting the Test Case name to get the TestCase row from the Test Data Excel sheet
 
   iTestCaseRow = ExcelUtils.getRowContains(sTestCaseName,0);
 
     Object[][] testObjArray = ExcelUtils.getTableArray("C:\\Users\\manojjai\\Documents\\dataprovider.xlsx","Sheet1",iTestCaseRow);
 
      return (testObjArray);
 
  }
 
}

2018年7月3日,星期二

测试NG数据提供者

当您需要传递例如从Java创建的复杂参数(复杂对象,从属性文件或数据库读取的对象等)时…),在这种情况下,可以使用Dataproviders传递参数。数据提供程序是用@DataProvider注释的方法。数据提供程序返回一个对象数组。

让我们使用Dataproviders来检查相同的Search示例。

影片教学-
 

怎么做 ?


1) 使用注释定义方法searchValue(),该方法定义为Dataprovider。此方法返回对象数组的数组。

2)将方法test()添加到您的DataProviderTest类。此方法将两个字符串作为输入参数。

3)添加注释@Test(dataProvider =“search”)到此方法。属性dataProvider映射到“search”.

4)将以下代码作为testNG测试用例运行,然后在我们传递两个数据值时,该测试将执行两次。



package test;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
 
import org.testng.annotations.DataProvider;
 
import org.testng.annotations.Test;
 
public class 测试NGDataProvider {
 
 private static WebDriver driver;
 
  @DataProvider(name = "搜索")
 
  public static Object[][] 搜索Value() {
 
        return new Object[][] { { "appium" }, { "selenium" }};
 
  }
 
  // Here we are calling the Data Provider object with its Name
 
  @Test(dataProvider = "搜索")
 
  public void test(String 搜索text) throws Exception {
 
   System.setProperty("webdriver.chrome.driver", "C:\\Softwares\\chromedriver_win32\\chromedriver.exe");
  
   driver=new ChromeDriver();
      
      driver.get("http://www.yubo666.com");
 
      Thread.sleep(5000);
      driver.findElement(By.xpath("*//input[@class='search-field']")).sendKeys(搜索text);
      
      driver.findElement(By.xpath("*//input[@class='search-submit']")).click();
 
      driver.quit();
  }
 
}

测试NG参数

众所周知,参数化在自动化测试中的价值。它使我们能够使用各种输入和验证值自动多次运行测试用例。在创建自动化框架时,我们需要付出一些努力来在我们的自动化测试中支持数据驱动的测试。在本视频中,我们将看到如何使用TestNG参数来参数化测试用例。

测试NG为我们提供了一个有趣的功能,称为TestNG参数。 测试NG允许您使用testng.xml将参数直接传递到测试方法。

影片教学-


怎么做?


让我举一个非常简单的示例,在我们的网站www.qaautomated.com上搜索,其中搜索文本 需要执行身份验证。

1) Create a test case to perform Search which takes the one string argument as 搜索text.

2) Provide 搜索text as parameter using 测试NG Annotation.



package test;


import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
import org.testng.annotations.Parameters;
 
public class 测试NGParameters{
 
 private static WebDriver driver;
 
  @Parameters("搜索text")
  @Test  
  public void test(String 搜索text) throws InterruptedException {
 
   System.setProperty("webdriver.chrome.driver", "C:\\Softwares\\chromedriver_win32\\chromedriver.exe");
  
   driver=new ChromeDriver();
      
      driver.get("http://www.yubo666.com");
 
      Thread.sleep(5000);
      driver.findElement(By.xpath("*//input[@class='search-field']")).sendKeys(搜索text);
      
      driver.findElement(By.xpath("*//input[@class='search-submit']")).click();
 
      driver.quit();
 
  }
 
}

3)在testng.xml中提供搜索文本值


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test thread-count="5" name="Test">
   <parameter name="搜索text" value="appium"/>
    <classes>
      <class name="test.测试NGParameters"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

4)右键单击testng.xml并以TestNG Suit的身份运行

2018年6月23日,星期六

测试NG优先级和排序

大家好,在这篇文章中,我们将看到如何在TestNG中优先考虑Test用例以及如何根据我们的需求对其进行排序。如果创建一个测试类并添加多个测试用例并运行它,则每次随机选择测试用例执行顺序。
使用TestNG批注@Test和参数“ priority”,我们可以定义执行测试用例的顺序和优先级。让我们考虑下面的示例,如果您多次运行下面给出的测试类,您会发现每次执行顺序/流程都不同,因此我们使用TestNG注释优先级定义固定的执行流程。

影片教学-



package test;
import org.testng.annotations.Test;
 
public class TesNGSequencing {
 
 
 
  @Test
 
  public void One() {
 
      System.out.println("Test Case number One");
 
  }
 
  @Test
 
  public void Two() {
 
   System.out.println("Test Case number Two");
 
  }
 
  @Test
 
  public void Three() {
 
   System.out.println("Test Case number Three");
 
  }
 
  @Test
 
  public void Four() {
 
   System.out.println("Test Case number Four");
 
  }
 
}

下面给出的是使用优先级注释的示例。当您运行下面的测试类时,每次执行流程都是恒定的,并从具有0优先级的测试用例开始。


package test;
import org.testng.annotations.Test;
 
public class TesNGSequencing {
 
 
 
  @Test(priority=0)
 
  public void One() {
 
      System.out.println("Test Case number One");
 
  }
 
  @Test(priority=1)
 
  public void Two() {
 
   System.out.println("Test Case number Two");
 
  }
 
  @Test(priority=2)
 
  public void Three() {
 
   System.out.println("Test Case number Three");
 
  }
 
  @Test(priority=3)
 
  public void Four() {
 
   System.out.println("Test Case number Four");
 
  }
 
}

跳过测试-


如果遇到需要跳过某些测试的情况,那么在这种情况下,您可以使用@Test批注和enabled参数来完成。




package test;
import org.testng.annotations.Test;
 
public class TesNGSequencing {
 
 
 
  @Test(priority=0, enabled=false)
 
  public void One() {
 
      System.out.println("Test Case number One");
 
  }
 
  @Test(priority=1)
 
  public void Two() {
 
   System.out.println("Test Case number Two");
 
  }
 
  @Test(priority=2)
 
  public void Three() {
 
   System.out.println("Test Case number Three");
 
  }
 
  @Test(priority=3)
 
  public void Four() {
 
   System.out.println("Test Case number Four");
 
  }
 
}

2018年6月22日,星期五

测试NG断言以及硬断言和软断言之间的区别

大家好,在本文中,我们将介绍TestNG的非常重要的功能,即TestNG断言。为什么这很重要?因为除非我们有一个带有期望值的实际值,否则任何测试用例都不会被认为是完整的。
测试NG硬断言,软断言中有三种断言。让我们详细了解所有这些。

影片教学


什么是断言及其工作原理?


考虑下面的示例,在该示例中,我们启动google.com并声称标题应与Google相同。这是最简单的断言示例,这就是带有断言的测试用例的样子。

@Test
 public void testCaseVerifyHomePage() {
  System.setProperty("webdriver.chrome.driver", "C:\\Softwares\\chromedriver_win32\\chromedriver.exe");
  WebDriver driver=new ChromeDriver();
  driver.navigate().to("http://google.com");
  Assert.断言等于("Gooooogle", driver.getTitle());
 }

现在,如果您更改代码以将标题的期望值声明为“ Doodle”,则它将引发“期望-Doodle但找到-Google”的异常。

@Test
 public void testCaseVerifyHomePage() {
  System.setProperty("webdriver.chrome.driver", "C:\\Softwares\\chromedriver_win32\\chromedriver.exe");
  WebDriver driver=new ChromeDriver();
  driver.navigate().to("http://google.com");
  Assert.断言等于("Doodle", driver.getTitle());
 }
这样,断言可以帮助我们确保测试用例通过或失败,并且可以使用这些类型的断言来捕获错误。
除了assertEquals之外,还有以下各种断言。

常用断言-


断言等于(实际的字符串,期望的字符串):-它接受两个字符串参数,并检查两个参数是否相等,否则将导致测试失败。

断言等于(实际的字符串,期望的字符串,字符串消息):-它接受三个字符串参数并检查两者是否相等,否则,它将使测试失败并抛出我们提供的消息。

断言等于(布尔实际值,期望布尔值):-它接受两个布尔参数,并检查两个参数是否相等,否则,将使测试失败。

断言等于(实际的java.util.Collection,预期的java.util.Collection,java.lang.String消息):-接受两个collection对象,并验证两个collection包含相同的元素和相同的顺序。如果不是,它将失败并显示给定消息。

assertTrue(条件):-它接受一个布尔参数,并检查条件是否为真,否则,将引发AssertionError。

assertTrue(条件,消息):-它需要一个布尔参数和String消息。它断言条件为真。如果不是,则抛出带有给定消息的AssertionError。

断言错误(条件):-它接受一个布尔参数,并检查条件是否为假,如果不是,则抛出AssertionError。

断言错误(条件,消息):-它需要一个布尔参数和String消息。它断言条件为假。如果不是,则抛出带有给定消息的AssertionError。

硬断言-  


硬断言是一种TestNG资产,如果assert语句失败并继续到下一个测试用例,并且assert语句之后的当前测试用例中有任何代码,它将立即执行该语句,从而引发Exception。我们之前看到的google示例也是硬断言的示例。您可以尝试添加代码 在assert语句之后,它将不会执行。
在下面的示例中,在第一个assert语句执行之后,测试用例执行停止,并且该测试用例中的其他语句不执行。


@Test
 public void test1(){
   
   Assert.assertTrue(5<1);
   System.out.println(Assertion Failed);
   Assert.断言错误(1<5);
   System.out.println(Assertion Failed);
   Assert.断言等于(Passed, Failed);
   System.out.println(Assertion Failed);
 }

软断言- 

为了解决硬断言的缺点,TestNG提供的自定义错误处理程序称为软断言。软断言是断言失败时不会引发异常的断言类型,将在断言语句之后继续进行下一步。通常在我们的测试需要执行多个断言并且用户希望所有断言/代码在失败/跳过测试之前被执行时使用。


@Test
 public void test1(){
   SoftAssert sa= new SoftAssert();
   sa.assertTrue(5<1);
   System.out.println(Assertion Failed);
   sa.断言错误(1<5);
   System.out.println(Assertion Failed);
   sa.断言等于(Passed, “Failed);
   System.out.println(Assertion Failed); 
                        sa.assertAll()
 }


2018年6月14日,星期四

测试NG分组并依赖

在上一篇文章中,我们了解了TestNG批注。在这篇文章中,我们将看到如何使用TestNG批注对测试用例进行分组并指定相关的测试用例。

团体‘是TestNG的一种注解,它可以 可以在一个组中执行多个测试。让’说你有一百 设备类的测试,笔记本电脑的十种方法,笔记本电脑的十种方法 笔记本等。您可能想运行所有笔记本测试 一起在一起并且您希望所有人都在一个测试套件中。用 分组的帮助可以有效地解决这种情况。

怎么做…
1)为笔记本电脑创建两种方法,为笔记本电脑创建两种方法,以及与笔记本电脑和笔记本电脑结合使用的一种方法。
2)使用将它们分别分组 (groups = { ” Group Name” })

影片教学-

 

import org.testng.annotations.Test;
 
public class TestGrouping {
 
  @Test (groups = { "Laptops" })
 
  public void laptop1() {
 
   System.out.println("Batch Laptops- Test Laptops1");
 
  }
 
  @Test (groups = { "Laptops" })
 
  public void laptop2() {
 
   System.out.println("Batch Laptops- Test Laptops 2");
 
  }
 
  @Test (groups = { "Notebooks" })
 
  public void notebook1() {
 
   System.out.println("Batch Notebooks- Test Notebooks 1");
 
  }
 
  @Test (groups = { "Notebooks" })
 
  public void notebook2() {
 
   System.out.println("Batch Notebooks- Test Notebooks2");
 
  }
 
  @Test (groups = { "Laptops", "Touch Screen Laptops" })
 
  public void youchScreenlaptop() {
 
   System.out.println("Batch Touch Screen Laptops- Test Touch Screen Laptops1");
 
  }
 
}

将以下代码添加到TestNG.xml-



<suite name="Suite">
 
    <test name="Practice Grouping">
 
        <groups>
 
     <run>
 
  <include name="Laptops" />
 
     </run>
 
 </groups>
 
 <classes>
 
     <class name="PackageName.TestGrouping" />
 
 </classes>
 
    </test>
 
</suite>

运行TestNG,xml-> right click -> Run as -> 测试NG Suit.

相关性测试-

您可能需要在一个测试用例中调用方法 特定的订单,或者您想在之间共享一些数据和状态 方法。 测试NG支持这种依赖关系。
测试NG允许您使用下面给出的两个选项来指定依赖项。
  • 使用属性 取决于方法 在@Test批注中
  • 使用属性 DependOnGroups 在@Test注释中。

import org.testng.annotations.Test;
 
public class Dependent {
 
  @Test (取决于方法 = { "OpenBrowser" })
 
  public void SignIn() {
 
   System.out.println("This will execute SignIn");
 
  }
 
  @Test
 
  public void OpenBrowser() {
 
   System.out.println("This will execute Open Browser");
 
  }
 
  @Test (取决于方法 = { "SignIn" })
 
  public void SignOut() {
 
   System.out.println("This will execute Log Out");
 
  }

如果有任何反馈和问题,请在下面的评论部分中发布。