TestNG: Como executar vários conjuntos de testes no Selenium

Índice:

Anonim

TestNG permite que você execute métodos de teste, classes de teste e casos de teste em paralelo dentro do seu projeto. Ao realizar a execução paralela, podemos reduzir o 'tempo de execução' à medida que os testes são iniciados e executados simultaneamente em diferentes threads.

Aqui, veremos como executar várias classes (também conhecidas como suítes diferentes) usando TestNG.

Etapa 1) Criar um arquivo TestNG.xml para executar o teste

Para fazer isso, siga as etapas abaixo.

  1. Crie um novo projeto no eclipse
  2. Crie dois pacotes nos projetos (nomeie-os como com.suite1 e com.suite2)
  3. Crie uma classe em cada pacote (nomeie-os como Flipkart.java e Snapdeal.java) e copie o código abaixo nas respectivas classes
  4. Crie um novo arquivo em seu projeto e nomeie-o como testng.xml (certifique-se de ter instalado o plugin de teste para eclipse, instruções disponíveis aqui). Testng.xml contém todas as configurações (classnames, testnames e suitnames.

Flipkart.java

package com.suite1;import java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;public class Flipkart {Driver WebDriver = novo FirefoxDriver ();String username = ""; // Mude para seu nome de usuário e senhaString senha = "";// Este método é para navegar na URL flipkart@Antes da aulapublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.flipkart.com");}// Para entrar flipkart@Testepublic void login () {driver.findElement (By.partialLinkText ("Login")). click ();driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-email")).sendKeys (nome de usuário);driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-pwd")).sendKeys (senha);driver.findElement (By.cssSelector (". submit-btn.login-btn.btn")). click ();}// Pesquisar produto@Testepublic void searchAndSelectProduct () {driver.findElement (By.id ("fk-top-search-box")). sendKeys ("moto g3");driver.findElement (By.cssSelector ("search-bar-submit.fk-font-13.fk-font-bold")).clique();// selecione o primeiro item nos resultados da pesquisaString css = ".gd-row.browse-grid-row: enésimo-do-tipo (1)> div: enésimo filho (1)> div> div: enésimo filho (2)> div> a";driver.findElement (By.cssSelector (css)). click ();}@Testepublic void buyAndRemoveFromCart () {driver.findElement (By.cssSelector (". Btn-express-checkout.btn-big.current")).clique();driver.findElement (By.cssSelector (". remove.fk-inline-block")). click ();Alerta a = driver.switchTo (). Alert ();a.accept ();}@Testepublic void logout () {Ações s = novas ações (driver);WebElement user = driver.findElement (By.partialLinkText (nome de usuário));s.moveToElement (usuário) .build (). perform ();driver.findElement (By.linkText ("Logout")). click ();}@Depois da aulapublic void quit () {driver.close ();}}

SnapDeal.java

package com.suite2;import java.util.concurrent.TimeUnit;import org.openqa.selenium.Alert;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.interactions.Actions;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;public class SnapDeal {Driver WebDriver = novo FirefoxDriver ();String username = ""; // Mude para seu nome de usuário e senhaString senha = "";String pinCode = "";// Este método é para navegar URL snapdeal@Antes da aulapublic void init () {driver.manage (). window (). maximize ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.snapdeal.com");}// Para entrar flipkart@Testepublic void login () {driver.findElement (By.xpath ("// botão [text () = 'Login']")). click ();driver.switchTo (). frame ("loginIframe");driver.findElement (By.cssSelector ("div [onClick = 'getLoginForm ()']")).clique();driver.findElement (By.id ("j_username")). sendKeys (nome de usuário);driver.findElement (By.id ("j_password_login")). sendKeys (senha);driver.findElement (By.id ("signin_submit")). click ();driver.switchTo (). defaultContent ();}// Pesquisar produto@Testepublic void searchAndSelectProduct () {driver.findElement (By.cssSelector (". col-xs-20.searchformInput.keyword")).sendKeys ("iphone 6s");driver.findElement (By.cssSelector (". sd-icon.sd-icon-search")). click ();// selecione o primeiro item nos resultados da pesquisaString css = ".product_grid_row: enésimo tipo (1)> div: enésimo filho (1)";driver.findElement (By.cssSelector (css)). click ();}@Testepublic void buyAndRemoveFromCart () {driver.findElement (By.xpath ("// li [contains (text (), 'Silver')]")). click ();driver.findElement (By.id ("pincode-check")). sendKeys (pinCode);driver.findElement (By.id ("id do botão de compra")). click ();driver.findElement (By.cssSelector ("i [title = 'Excluir item']")). click ();Alerta a = driver.switchTo (). Alert ();a.accept ();}@Testepublic void logout () {driver.findElement (By.linkText ("COMECE AS COMPRAS AGORA")). click ();Ações s = novas ações (driver);WebElement user = driver.findElement (By.cssSelector (". Sd-icon.sd-icon-user"));s.moveToElement (usuário) .build (). perform ();driver.findElement (By.linkText ("Logout")). click ();}@Depois da aulapublic void quit () {driver.close ();}}

TestNg.xml

A estrutura final do projeto é semelhante a abaixo,

Etapa 2) Execução paralela em TestNG

Após criar o arquivo xml conforme mostrado acima, na próxima etapa, executaremos o teste paralelo. Abaixo está o código.

1) contagem de threads : Isso é usado para execução paralela, com base no script de número. Ele será executado em ordem paralela ou sequencial.

2) detalhado : é usado para registrar os detalhes de execução no console. O valor deve ser 1-10. Os detalhes do log na janela do console ficarão mais detalhados e claros conforme você aumenta o valor do atributo verbose no arquivo de configuração testng.xml.

3) nome : Nome da suíte. Aqui está "Gmail Suite"

4) Paralelo : Para executar scripts em paralelo, o valor pode ser tests / classes / methods / suites. O valor padrão é nenhum

Clique com o botão direito do mouse em testng.xml e selecione executar como teste, uma vez bem sucedido você verá todos os resultados

Ao executar o código acima, você obterá a seguinte saída.

Resultado:

1) nome do pacote fornecido em testng.xml

2) nome do teste fornecido em testng.xml

3) nome da classe dada em testng.xml

4) nomes de métodos anotados com @Test no arquivo .java

Da mesma forma, ele executará o conjunto de testes para transações instantâneas também.

Conclusão:

Aqui, vimos no exemplo acima, como usar o Testng para executar o teste paralelo. TestNG oferece a opção de executar vários testes em paralelo em um único arquivo de configuração (XML).