learn how use testng annotations selenium
TestNG, como muitos de vocês sabem, é uma automação estrutura amplamente utilizada em selênio . É importante que todos os testadores entendam as anotações usadas ao trabalhar com o TestNG.
Para simplificar, as anotações TestNG são linhas de código que são inseridas no programa / lógica de negócios para controlar como os métodos abaixo devem ser executados.
Neste artigo, vou me concentrar na importância dos diferentes tipos de anotações e seu uso.
Abaixo, compartilhei a configuração usada para meu projeto. Isso não precisa necessariamente ser seguido em seu projeto.
As anotações diferem dependendo dos requisitos do seu projeto. No entanto, o fluxo de execução será o mesmo.
Pré-requisitos:
- Instale TestNG no Eclipse. Verificar este tutorial no guia de instalação .
- JDK - kit de desenvolvimento do Java
- As anotações podem ser usadas apenas com a versão Java 1.5 ou superior
Antes de escrever scripts de teste ou configurar um projeto, devemos conhecer a hierarquia na qual funcionam as anotações. A execução sempre permanecerá a mesma.
Por exemplo, compile e execute o script abaixo e observe a ordem de execução. Será o seguinte:
- BeforeSuite
- BeforeTest
- Antes da aula
- BeforeMethod
- Caso de Teste 1
- AfterMethod
- BeforeMethod
- Caso de Teste 2
- AfterMethod
- Depois da aula
- AfterTest
- AfterSuite
Exemplo:
public class test { @BeforeMethod public void beforeMethod() { System.out.println(' Before Method will execute before every test method'); } @AfterMethod public void afterMethod() { System.out.println('After Method will execute after every test method '); } @BeforeClass public void beforeClass() { System.out.println('Before Class will always execute prior to Before Method and Test Method '); } @AfterClass public void afterClass() { System.out.println('After Class will always execute later to After Method and Test method'); } @BeforeTest public void beforeTest() { System.out.println('Before Test will always execute prior to Before Class, ,Before Method and Test Method '); } @AfterTest public void afterTest() { System.out.println('After Test will always execute later to After Method, After Class '); } @BeforeSuite public void beforeSuite() { System.out.println(“Before Suite will always execute prior to all annotations or tests in the suite.'); } @AfterSuite public void afterSuite() { System.out.println('After suite will always execute at last when all the annotations or test in the suite have run.'); } @Test public void testCase1() { System.out.println('This is my First Test Case 1'); } @Test public void testCase2() { System.out.println('This is my Second Test Case 2'); } }
Podemos interromper o processo de script de teste nas etapas abaixo:
- Escreva a lógica de negócios do seu teste e insira acima Anotações TestNG no seu código
- Adicione as informações sobre o seu teste (por exemplo, o nome da classe, os grupos, métodos que deseja executar, etc.) em um testng.xml Arquivo.
- Executar TestNG
Mas a questão ainda permanece - que informações devemos fornecer nas anotações acima?
Dê uma olhada nas etapas importantes que podemos alcançar usando as anotações acima:
# 1) @Teste
Esta é a parte principal do nosso script de automação onde escreveremos a lógica de negócios, as coisas que desejamos automatizar. Podemos passar atributos para nosso método de teste.
Abaixo estão as listas de atributos que podemos passar para o nosso método de teste:
- alwaysRun : Isso é usado quando queremos ter certeza de que um método sempre será executado, mesmo se os parâmetros dos quais o método depende falharem. Se definido como verdadeiro, este método de teste sempre será executado. Por exemplo: @Test (alwaysRun = true)
- dataProvider : TestNG dataProvider é usado para fornecer quaisquer dados para parametrização. Por exemplo. @Test (dataProvider = “Hello”).
- dataProviderClass : Esta é a classe de onde passamos os dados para o provedor de dados. Em nosso caso, o nome da classe dataProvider é “Hello”.
- DependeOnGroups : É a lista de grupos da qual esse método depende. Por exemplo: @Test (grupos = {“Cidade”, ”Estado”})
- DependeOnMethods: Este comando é usado para executar um método baseado em seu método dependente. Por exemplo: @Test (dependsOnMethods = {“OpenBrowser”, ”banco de dados ativo”})
- descrição : É a descrição do método. Por exemplo: @Test (descrição = “método de teste”)
- invocationCount : Refere-se ao número de vezes que um método deve ser chamado. Isso funcionará como um loop. Por exemplo: @Test (invocationCount = 7) . Portanto, este método será executado 7 vezes.
- invocationTimeOut : Refere-se ao número máximo de milissegundos que um método deve levar para que todo invocationCount seja concluído. Este atributo será ignorado se invocationCount não for especificado. Por exemplo: @Test (invocationCount = 7, invocationTimeOut = 30)
- prioridade : Este comando define a prioridade do método de teste. Prioridades mais baixas serão programadas primeiro. Por exemplo: @Test (prioridade = 1)
#dois)@BeforeSuite e @AfterSuite
No @BeforeSuite método anotado, você pode configurar e iniciar selênio motoristas e em @AfterSuite método anotado, você pode parar os drivers Selenium
Exemplo :
public class TestSuiteSetup () { @BeforeSuite(alwaysRun = true) public void setupSuite() { WebDriver driver = new FirefoxDriver(); } @AfterSuite(alwaysRun = true) public void tearDown() { driver().close(); } }
# 3)@BeforeClass e @AfterClass
No @Antes da aula método anotado, você pode configurar suas propriedades do firefox, inicializar seu driver e assim por diante e em @Depois da aula método anotado, você pode parar o motorista
Exemplo :
@BeforeClass(description = 'Set capabilities for your Firefox browser and set time it should wait for a page to load.') public static void firefoxSetUp() throws MalformedURLException { DesiredCapabilities capability = DesiredCapabilities.firefox(); driver = new FirefoxDriver(capability); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.manage().window().setSize(new Dimension(1920, 1080)); } @AfterClass(description = 'close your firefox driver') public void afterclass(){ driver.close(); }
# 4)@BeforeMethod e @AfterMethod
No @BeforeMethod método anotado, você pode verificar a conexão do banco de dados antes de executar seu método de teste e em @AfterMethod método anotado, você pode fechar sua conexão de banco de dados
Exemplo :
@BeforeMethod(description='connect to database') public void beforemethod() throws SQLException{ //check database connection is up String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; DriverManager.getConnection(databaseurl, 'username', 'password'); }
@AfterMethod(description='close database connection') public void aftermethod() throws SQLException{ //check database connection is closed String databaseurl = 'jdbc:oracle://192.168.1.258/myDB'; Connection connect = DriverManager.getConnection(databaseurl, 'username', 'password'); if(connect!=null) connect.close(); }
# 5)@BeforeTest e @AfterTest
No @BeforTest método, você pode definir suas preferências de perfil do firefox e em @AfterTest método, você pode colocar algum código que irá gerar o resultado do teste e enviá-lo às partes interessadas
Exemplo :
@BeforeTest (description='set your firefox profile preferences according to your project requirement') public void single_run(){ FirefoxProfile firefoxProfile = new FirefoxProfile(); firefoxProfile.setPreference ('browser.download.folderList',2); firefoxProfile.setPreference ('browser.download.manager.showWhenStarting',false); firefoxProfile.setPreference ('browser.download.dir','E:\reports\'); firefoxProfile.setPreference ('browser.helperApps.neverAsk.saveToDisk','csv'); driver = new FirefoxDriver(firefoxProfile); String baseUrl = 'www.gmail.com'; } @AfterTest (description='') public void teardown(){ //a code which will send the test details report }
O aspecto mais importante que deve ser observado aqui ao trabalhar com anotações é que seu sistema deve estar equipado com a versão Java 1.5 ou superior, caso contrário, o Eclipse pode mostrar um erro de que anotações não são suportadas em seu sistema.
Agora, considere um caso em que seu sistema possui a versão correta do Java necessária para anotações, mas o erro ainda aparece.
Algo como abaixo:
Erro de sintaxe. As anotações só estão disponíveis se o nível de origem for 1,5 ou superior.
O que você vai fazer agora? tem três opções para corrigir esta situação.
Vamos repassar um por um:
Opção 1:
- Vá para o Eclipse e clique com o botão direito no seu projeto
- Selecione Propriedades
- Clique em Java Compiler
- Certifique-se de que seu nível de conformidade do compilador é 1,5 ou superior
- Salve as configurações e seu problema será resolvido
Opção 2:
- Vá para a guia da janela no Eclipse
- Selecione Preferências
- Clique em Java e depois em Compiler
- Certifique-se de que seu nível de conformidade do compilador é 1,5 ou superior
- Salve as configurações e seu problema será resolvido
Opção nº 3:
Verifique seu Java Home Path configurando a variável de caminho de ambiente Java correta.
Conclusão:
Por meio deste artigo, tentamos discutir algumas das anotações e atributos importantes que são freqüentemente usados pelos testadores. No entanto, existem mais anotações no TestNG que não são usadas com frequência, como @AfterGroups, @BeforeGroups e assim por diante, que são usados quando você está trabalhando com grupos no script de teste do projeto.
Portanto, use as anotações acima de acordo com seus requisitos. É sempre aconselhável não fazer a configuração do projeto no método de teste. No método de teste, escreva a lógica de negócios principal que deve ser testada.
ferramenta de reparo de erros do windows 10
Certifique-se de que seu sistema esteja equipado com versões Java 1.5 ou superior, caso contrário, o Eclipse pode mostrar um erro de que as anotações não são suportadas em seu sistema.
Espero que este artigo o ajude com as anotações do TestNG. Por favor, informe-nos em caso de comentários ou perguntas.
Leitura recomendada
- Como usar o framework TestNG para criar scripts do Selenium - Tutorial # 12 do TestNG Selenium
- Selenium Encontrar Elemento por Tutorial de Texto com Exemplos
- 30+ Melhores Tutoriais de Selênio: Aprenda Selênio com Exemplos Reais
- Tutorial Cucumber Selenium: Cucumber Java Selenium WebDriver Integration
- Introdução ao Selenium WebDriver - Selenium Tutorial # 8
- Scripts Eficientes do Selenium e Cenários de Solução de Problemas - Tutorial # 27 do Selenium
- Depurando Scripts Selenium com Logs (Tutorial Log4j) - Tutorial Selenium # 26
- Tutorial Python DateTime com exemplos