TestNG Параллельные тесты с использованием провайдера данных - PullRequest
0 голосов
/ 05 февраля 2019

Я бы хотел симулировать Google Search с различными параметрами поиска параллельно, используя Selenium и TestNG.Ниже мой тестовый класс и testng.xml.Я проверил свои тестовые предложения, используя приведенные ниже аннотации @Test(dataProvider="googlesearchDataProvider",threadPoolSize=3,singleThreaded=false) или testng.xml.Оба теста были выполнены в однопоточном браузереНе могли бы вы дать мне знать, что не так и что нужно сделать.Я хочу, чтобы одновременно было 3 независимых экземпляра браузера, работающих параллельно с различными поисковыми данными, получающими их от поставщика данных.

package com.test.google.search;

import static org.testng.Assert.fail;

import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import com.aig.testframework.Driver;

/**
 * @author dpoddar
 *
 */
public class GoogleSearch {

    private WebDriver driver;
    private String baseUrl;
    private boolean acceptNextAlert = true;
    private StringBuffer verificationErrors = new StringBuffer();

    //@BeforeClass(alwaysRun = true)
    @BeforeTest(alwaysRun = true)
    public void setUp() throws Exception {
        Driver.getInstance().setDriver("firefox", "Windows 7", "local");
        driver =  Driver.getInstance().getDriver(); 

        baseUrl = "https://www.google.com/";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }

    @Test(dataProvider="googlesearchDataProvider",threadPoolSize=3,singleThreaded=false)
    public void testGoogleSearch(String serachParam) throws Exception {
        System.out.println("testGoogleSearch. Thread id is: " + Thread.currentThread().getId());
        driver.get("https://www.google.com/");
        driver.findElement(By.name("q")).clear();
        driver.findElement(By.name("q")).sendKeys(serachParam);
        driver.findElement(By.name("q")).sendKeys(Keys.ENTER);
    }

    //@AfterClass(alwaysRun = true)
    @AfterTest(alwaysRun=true)
    public void tearDown() throws Exception {
        driver.quit();
        String verificationErrorString = verificationErrors.toString();
        if (!"".equals(verificationErrorString)) {
            fail(verificationErrorString);
        }
    }


    @DataProvider(name = "googlesearchDataProvider")
    public Object[][] createData(Method m) {
      System.out.println(m.getName());  // print test method name
      return new Object[][] { new Object[] { "Test"},{"google"},{"Java"},{"Spring"},{"AWS"},{"Market Trends"},{"Hotels Near 91367"},{"Starbucks"}};
    }
}

testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test suite" parallel="instances" thread-count="3">
  <test name="Regression 1" >
    <classes>
      <class name="com.test.google.search.GoogleSearch"/>
    </classes>
  </test>
</suite>

1 Ответ

0 голосов
/ 05 февраля 2019

Я решил это, используя @Factory и изменения в testng.xml.Изменения ниже.

Пожалуйста, используйте другие методы для постановки задачи.

public class GoogleSearch {
 private String searchParam;
 @Factory(dataProvider = "googlesearchDataProvider",enabled=true)
 public GoogleSearch(String searchParam) {
      this.searchParam = searchParam;
  }

 @Test
 public void testGoogleSearch() throws Exception {
        System.out.println("testGoogleSearch with "+searchParam+". Thread id is: " + Thread.currentThread().getId());
        driver.get("https://www.google.com/");
        driver.findElement(By.name("q")).clear();
        driver.findElement(By.name("q")).sendKeys(searchParam);
        driver.findElement(By.name("q")).sendKeys(Keys.ENTER);
    }
}

testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test suite" verbose="2">
  <test name="Regression 1" parallel="instances" thread-count="3">
    <classes>
      <class name="com.test.google.search.GoogleSearch"/>
    </classes>
  </test>
</suite>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...