Uma das melhores práticas na automação de teste é separar os dados de teste dos arquivos de teste. Este aspecto é um dos principais requisitos ao projetar a estrutura de teste. Cypress nos ajuda a separar os dados de teste com Cipreste Luminárias. Neste tópico, falaremos sobre Acessórios Cypress com implementação prática e exemplos em tempo real
Conteúdo
- O que é um acessório no Cypress?
- Como usar luminárias Cypress em testes?
- Como ler dados de aparelhos no Cypress?
- Acessando os valores do arquivo de fixação para o arquivo de teste
- Vários acessórios Cypress
O que é um acessório no Cypress?
As luminárias Cypress podem ser usadas dados de origem de arquivos externos. As luminárias no Cypress ajudam você a ler ou escrever em arquivos. Uma das estruturas populares em automação de teste é a estrutura baseada em dados, onde separamos os dados dos arquivos de teste. Normalmente mantemos os dados em arquivo externo como o Excel e os lemos usando bibliotecas externas. Cypress nos fornece o mesmo recurso para ler dados de arquivos.
Cypress nos fornece uma pasta chamada luminárias, onde podemos criar arquivos JSON e ler dados a partir deles, onde podemos ler esses arquivos em vários arquivos de teste. Vamos armazenar os dados como valor chave emparelhar e acessá-los.
Como usar luminárias Cypress em testes?
Podemos acessar os fixtures Cypress através da seguinte sintaxe fornecida abaixo
cy.fixture(filePath)
cy.fixture(filePath, encoding)
cy.fixture(filePath, options)
cy.fixture(filePath, encoding, options)
Vamos entender os parâmetros que podem ser passados nas luminárias
caminho de arquivo - o caminho para onde você armazenou seus dados de teste
codificação - A codificação usada durante o uso de um arquivo. Algumas das codificações são ascii, base64, hex, binário etc.
opções - Nas opções, podemos passar o tempo limite resposta. É para especificar o tempo limite para resolver cy.fixture ()
Como ler dados de luminárias no Cypress?
Estaremos definindo os dados de teste em um arquivo sob o fixação pasta. Estaremos acessando os dados de teste do arquivo JSON no script de teste usando acessórios Cypress.
Agora, vamos entender um exemplo para cipreste acessórios. Entraremos no url usando o nome de usuário e a senha. Então vamos armazenar os valores de nome de usuário e senha em um arquivo.
Vamos criar um arquivo chamado credenciais.json sob a pasta de fixação. Estaremos definindo as variáveis no formato JSON.
{
"username" : "[email protected]",
"password" : "admin",
"adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
Acessando os valores do arquivo Fixture para o arquivo de teste
Uma vez que definimos nossos valores JSON no credenciais.json , veremos como podemos acessá-los em nosso arquivo de teste usando fixtures Cypress.
Iremos acessar os dados do aparelho usando o this
palavra-chave no gancho antes
describe("Cypress Fixtures Example", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) })
No exemplo acima, estamos acessando nosso arquivo JSON via cy.fixture ('credenciais'). Uma vez que nosso nome de arquivo JSON é credenciais.json, estamos passando o nome do arquivo em cy.fixture (). Agora estamos usando o conceito de alias e definindo nossos dados como dados de teste. Com a variável dados de teste, podemos usar os valores de nome de usuário e senha em nosso arquivo de teste
describe("Cypress Fixtures Example", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) it("Login com credenciais válidas ", function () { cy.visit(this.testdata.adminUrl) cy.get('[id=Email]').clear() cy.get('[id=Email]').type(this.testdata .username) cy.get('[id=Password]').clear() cy.get('[id=Password]').type(this.testdata.password) cy.get('[type=submit] ').click(); cy.url().should('ser.equal', this.testdata.adminUrl) }); });
Como você pode ver acima, em .type()
estamos passando o valor de nosso arquivo credentials.json como este.testdata.nome de usuário. Da mesma forma, para senha, estamos acessando o valor usando isto.testdata.senha. Para o url, estamos usando a mesma forma que o nome de usuário e a senha.
Quando executamos o caso de teste, você pode ver o valor sendo impresso no painel. Desta forma, executamos nosso caso de teste usando Cypress Fixtures
Várias luminárias Cypress
Nesta seção, entenderemos como usar as luminárias Cypress com vários arquivos de luminárias.
Se quisermos usar dados de fixação diferentes para o mesmo arquivo de teste, por exemplo, existem dois conjuntos de credenciais que precisamos verificar para a página de login, como podemos acessar os arquivos?
Uma maneira é escrever vários it blocos que irão replicar o mesmo código repetidamente. De outra forma, podemos usar Acessórios Cypress para acessar diferentes testes dados no arquivo de especificação. Vamos ver como podemos conseguir isso usando acessórios Cypress
Já temos um arquivo de fixação chamado credenciais.json.
{
"username" : "[email protected]",
"password" : "admin",
"adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
Agora vamos criar outro arquivo de fixação chamado userData.json onde usaremos um nome de usuário e senha inválidos diferentes.
{
"username" : "[email protected]",
"password" : "user",
"adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
Agora vamos ver como podemos acessar os dois dados diferentes em nosso arquivo de teste.
Iremos refatorar o mesmo arquivo de teste usando a condição de usar dois arquivos de fixture diferentes.
const testValueFixtures = [ { "name": "credentials", "context": "1" }, { "name": "userData", "context": "2" } ] describe('Automation Test Suite - Fixtures', function () { //percorrendo ambos os fixtues testValueFixtures.forEach((fixtureData) => { describe(fixtureData.context, () => { // acessando os dados de teste do arquivo de fixture before(function () { cy. fixture(fixtureData.name).then(function (testData) { this.testData = testData; }) }) it("login", function () { cy.visit('https://admin-demo.nopcommerce.com /admin/') cy.get('[id=Email]').clear() cy.get('[id=Email]').type(this.testData.username) cy.get('[id= Senha]').clear() cy.get('[id=Senha]').type(this.testData.password) cy.get('[tipo=enviar]').click(); cy.url( ).should('be.equal', this.testData.adminUrl) }) }) }) })
Inicialmente, estamos criando uma variável chamada testValueFixtures como ordem onde estamos criando o contexto de dois arquivos de fixture. No primeiro contexto, estamos passando o nome como 'Credenciais'e o segundo como'dados do usuário', pois eles representam nossos nomes de arquivo JSON onde temos nosso valor definido.
Em segundo lugar, estamos percorrendo as duas variáveis de fixação no bloco de descrição. E como discutimos anteriormente, estamos acessando os dados antes do bloco usando .this()
O resto do código é o mesmo, onde estamos passando os dados no cy.get()
Quando executamos nosso teste, ele será executado em dois conjuntos, onde o primeiro caso passa com credenciais válidas e o segundo falha devido a credenciais inválidas
Como você pode ver no instantâneo acima, o primeiro caso de teste passou e inseriu o valor do primeiro arquivo de fixação credenciais.json
Como você pode ver na imagem acima, o teste falhou e os valores aprovados são do segundo arquivo de fixação userData.json
Você também pode ver como escrever fixtures Cypress usando o Modelo de Objeto de Página SUA PARTICIPAÇÃO FAZ A DIFERENÇA
Olá… eu sou Aishwarya Lakshmi, concluí meu B.Tech e tenho quase 2+ anos de experiência na área de testes. Sou um entusiasta de testes e apaixonado por testes e adoro explorar coisas novas em minha área e compartilhá-las com meus colegas. Gosto de escrever blogs durante meu tempo livre da maneira mais simples, mas eficaz. Como testador, gosto de ter as coisas perfeitas, por isso desejo que meus leitores tenham um entendimento perfeito da tecnologia. Eu me mantenho atualizado com as novas tecnologias relacionadas a testes e passo tempo entendendo-as. Fico feliz em ajudar os alunos a compreender os conceitos dos testes.
Olá caro leitor,
Somos uma equipe pequena na Techiescience, trabalhando duro entre os grandes players. Se você gostou do que viu, compartilhe nosso conteúdo nas redes sociais. Seu apoio faz uma grande diferença. Obrigado!