Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

É possivel colocar mais de um metodo [Test] dentro de uma classe com [TestFixture]?

É possivel eu criar mais de um teste dentro da mesma TestFixture, exemplo

[TestFixture] class Testes {

    IWebDriver driver = new ChromeDriver();

    private ObjectPage usuario;

    public UsuarioSystemTest()
    {

        usuario = new ObjectPage(driver);
    }

    [SetUp]
    public void AntesTeste()
    {
        driver.Url = "url";

        Thread.Sleep(2000);
    }
    [Test]
    public void cadastrarUsuario()
    {
        //Testes aqui
    }

    [Test]
    public void cadastrarUsuario()
    {
        //Testes aqui
    }

    [Test]
    public void cadastrarUsuario()
    {
        //Testes aqui
    }

    [TearDown]
    public void FinalizaTeste()
    {
        driver.Close();
        driver.Quit();

    }

}

seria possivel fazer algo assim? Pergunto, pois, se eu tenho uma pagina que tenha muitos cenarios variaveis, como perfis diferente para um usuario, empresas diferentes, nao queria fazer 1 classe para cada teste, queria saber se tem como manter 2,3 ou mais testes em 1 classe de teste apenas, usando o testfixture, setup, teardown, ou se possivel, até mesmo OneTimeSetup ou OneTimeTeardown

Agradeço

3 respostas

Olá Felipe,

no NUnit sua classe poderá ter vários testes, cada um deles será um novo método anotado com o [Test]. No seu caso, a única mudança que você teria que fazer é que por conta da linguagem C# os métodos não podem ter o mesmo nome.

Uma coias que você pode fazer é que os nomes dos métodos descrevem qual o cenário/situação de cadastro que estamos verificando. Como os cenários serão diferentes, os nomes do métodos também serão.

Quanto aos metodos com mesmo nome, foi vacilo meu :D, criei isso apenas para exemplo.

Mas eu fui tentar automatizar um cadastro de usuario, e queria e fiz conforme mostrado acima, porem, cheguei em um empasse, que foi:

  • eu escrevi os testes de forma que eles nao navegassem entre as paginas, ou seja, o login no sistema, era feito no setup, o acesso á pagina de cadastro era feito no metodo do teste.

O problema acontece, que ele executava o primeiro metodeo de teste corretamente, porem o segundo, ele acusava erro na busca do elemento de acesso ao menu, e com razao, por que meu TearDown, fazia com que o sistema se desconectasse. Dai minha duvida era mais essa, se existe uma maneira, ou um modo de implementação, em que eu diga para o NUnit sempre rodar o Setup e o TearDown em cada metodo de teste, mesmo que eles estejam dentro da mesma TestFixture

solução!

Olá Felipe,

o SetUp e o TearDown são executados antes e depois de cada teste dentro da mesma TestFixture, respectivamente. O problema na verdade ocorreu pelo conteúdo na TearDown.

    [TearDown]
    public void FinalizaTeste()
    {
        driver.Close();
        driver.Quit();

    }

No primeiro teste que ele executar, no final ele rodará este método e fechará o driver. E quanto ele for executar o próximo teste rodando antes o SetUp , ele já dará erro no comando de driver.Url = "url"; pois o driver já estará fechado.

Para resolver este problema existem duas opções:

  1. Anotar o método de FinalizaTeste com o [TestFixtureTearDown] ao invés do [TearDown], pois com essa anotação ele só fechará o navegador após todos os testes terminarem de executar
  2. Ou mover a criação do driver e da ObjectPage para o método de [SetUp], para eles serem criados em cada teste