Erro ao executar todos os testes



  • deve ter alguma coisa no tear down ou setup que deve estar quebrando seu teste…

    Esse erro aparece no começo da execução? ou ele chega a executar alguma coisa?



  • Passei por isso justamente com C# e não achei solução ainda, o erro não era o mesmo que o seu, mas o contexto era, rodar um por vez passava, rodar todos, alguns quebravam…



  • @leonardo-galani
    obrigado pelo Feedback, então eu fiz o seguinte criei 3 scripts de testes, um que valida o login do usuário, outro para cadastrar um vendedor válido e outro para cadastrar vendedor inválido. Eu rodando individualmente funciona certinho, porém quando rodo todos testes de uma vez só primeiro funciona de login, ele valida e fecha o navegador, ai quando vai abrir o segundo teste já mostra o erro, só executa o primeiro de login, os dois de vendedor não.

       [SetUp]
            public void initialize()
            {
                // Abrindo a aplicação
                driver.Navigate().GoToUrl(baseurl);
                // Tempo de resposta para char elementos
                driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
                // Digita o código de licença
                driver.FindElement(By.Id("ctl00_conteudoMaster_txt_mt")).SendKeys("14001");
                // Digita o login
                driver.FindElement(By.Id("ctl00_conteudoMaster_txt_login")).SendKeys("rafael");
                // Digita a senha
                driver.FindElement(By.Id("ctl00_conteudoMaster_txt_senha")).SendKeys("390328");
                // Clica no botão "Entrar"
                driver.FindElement(By.Id("ctl00_conteudoMaster_btnContinuar")).Click();
            }
    
     [TearDown]
            public void cleanup()
            {
                // Fecha o navegador
                driver.Close();
            }
    

    Ficou assim o setup e tear down, se conseguir me ajudar agradeço, tenho uma reunião para apresentar para meus gestores semana que vem, estou convencendo eles a implantar automação. Obrigado.



  • @eduardo-cini , Opa Eduardo valeu pela resposta, então você não conseguiu rodar todos?
    O meu ele roda o primeiro teste, depois o segundo já mostra o erro, e se eu for e executo individualmente ele roda certinho, to puto com isso, caçando na internet e fuçando mas não saio do lugar.



  • Vamos la… :)

    1 - Parece que seu setup nao inicilaliza o browser… logo… quando vc faz “driver.close()” no tearDown, o proximo teste vai falhar. (da uma olhada nessa resposta -> https://stackoverflow.com/questions/49131593/how-to-reopen-browser-from-chromedriver-after-driver-close)

    2 - Use page objects para nao ter que colocar milhoes de comentários…
    ( da uma olhada aqui --> https://www.swtestacademy.com/page-object-model-c/)



  • @leonardo-galani
    Opa muito obrigado Leo, valeu pela força ;)



  • @rafael-sousa O seus testes podem quebrar se o contexto de um teste passar para outro… tipo… se todo teste vc faz login… se não tiver um tear down onde limpe a sessao e afins… talvez falhe pois a sessão ainda vai estar la…

    pode acontecer isso com cache tb… sempre bom definir bem os processos de setup e tear down :)

    eu nao sei como funciona em c# mas em ruby com capybara vc tem diversos hooks que tornam a vida muito mais facil para esse tipo de configuração :)



  • @leonardo-galani
    Legal, vou dar uma olhada mais profunda no assunto, mas valeu pelas dicas, aproveitando o engajamento deixa eu te falar, eu tenho no meu setup todas as pré-condições do meu teste, exemplo o link da aplicação, usuário e senha, depois nos testes eu dou continuidade nas condições que foram definidas. Exemplo, tenho no setup, as pré-condições :

            driver.Navigate().GoToUrl(baseurl);
            // Tempo de resposta para char elementos
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
            // Digita o código de licença
            driver.FindElement(By.Id("ctl00_conteudoMaster_txt_mt")).SendKeys("14001");
            // Digita o login
            driver.FindElement(By.Id("ctl00_conteudoMaster_txt_login")).SendKeys("rafael");
            // Digita a senha
            driver.FindElement(By.Id("ctl00_conteudoMaster_txt_senha")).SendKeys("390328");
            // Clica no botão "Entrar"
            driver.FindElement(By.Id("ctl00_conteudoMaster_btnContinuar")).Click();
    

    Depois nos meus testes eu começo a partir do que vem depois dessas pré-condições, mas minha dúvida é o seguinte, agora eu vou precisar fazer um teste com um código diferente da licença e do usuário e senha então eu preciso que esse novo teste ignore o setup onde tem esses passos, e sim começe o teste a partir do que eu colocar na classe de teste [Test], e os demais testes continua a pegar as pré-condições do setup normalmente, tem como eu fazer isso? Sabe algo parecido alguma dica, obrigado!



  • Da uma lida a mais como funciona o NUnit e seus hooks ( http://nunit.org/docs/2.6.4/setupFixture.html ) com isso vc deve entender melhor como pode fazer os hooks globais e hooks de spec.

    Pensa na melhor forma de organizar seus cenários para evitar duplicação de código… e o mais importante: Antes de automatizar, se familiarize com a ferramenta e com a linguagem usada.



  • @leonardo-galani
    Show! Obrigado mais uma vez.