Как автоматизировать отрицательные и положительные тесты с помощью cypress

#javascript #cypress

Вопрос:

Мне нужно автоматизировать положительную и отрицательную части пользовательского интерфейса, например, я выбираю раздел «Вход», здесь мой код

 it('login is not correct',function(){
    

    cy.contains('Invalid Username or Password').should('not.exist')
    cy.get('input[type = "text"]').type('admins')
    cy.get('input[type = "password"]').type('admins')
    cy.get('.MuiButton-label').contains('LOGIN').should('be.visible').click()

    cy.contains('Invalid Username or Password').should('exist')
    



})

it('The correct login page',function(){
    cy.get('input[type = "text"]').type('admin')
    cy.get('input[type = "password"]').type('admin')
    cy.get('.MuiButton-label').contains('LOGIN').should('be.visible').click()
    
          
})
 

проверьте пользовательский интерфейс

мой вопрос в том, как проверить как положительные, так и отрицательные тесты

Ответ №1:

Ваш тест на неправильный вход в систему выглядит правильным, поскольку вы проверяете сообщение об ошибке.

 it("login is not correct", function () {
  cy.contains("Invalid Username or Password").should("not.exist")
  cy.get('input[type = "text"]').type("admins")
  cy.get('input[type = "password"]').type("admins")
  cy.get(".MuiButton-label").contains("LOGIN").should("be.visible").click()
  cy.contains("Invalid Username or Password").should("exist")
})
 

Для правильного входа в систему вам необходимо указать какой-либо элемент со страницы, которую вы получите после успешного входа в систему. Хорошим способом было бы утвердить имя пользователя admin

 it('The correct login page',function(){
    cy.get('input[type = "text"]').type('admin')
    cy.get('input[type = "password"]').type('admin')
    cy.get('.MuiButton-label').contains('LOGIN').should('be.visible').click()
    cy.get('selector').should('have.text', 'admin')  //assert the username admin on the webpage
})
 

Используя if-else. Но я не буду рекомендовать это решение, потому что мы используем пользовательское ожидание после входа в систему, потому что мы не знаем, сколько времени потребуется для завершения действия входа в систему, и дайте нам обратную связь, которая не удалась или прошла, и это может привести к ошибочным тестам. Поэтому, на мой взгляд, охват двух сценариев в двух разных тестах-это лучший и полностью доказательный подход.

 it("Login Functionality", function () {
  cy.get('input[type = "text"]').type("admin")
  cy.get('input[type = "password"]').type("admin")
  cy.get(".MuiButton-label").contains("LOGIN").should("be.visible").click()
  cy.wait(2000) //wait
  cy.get("body").then((body) => {
    if (body.find("selector of error message").length > 0) {
      //Login Failed
      expect("selector of error message").to.have.text("Invalid Username or Password")
    } else {
      //Login Passed
      expect("selector").to.have.text("admin")
    }
  })
})
 

Комментарии:

1. как написать это в другом состоянии ?

2. обновил свой ответ.

3. хорошо, я изменил его с помощью clear(), а затем снова введите(«администратор») в качестве имени пользователя? это нормально ? cy.get(‘ввод[тип = «текст»]’).очистить() cy.get(‘ввод[тип = «пароль»]’). очистить()

4. Итак, вы собираетесь использовать подход «если-то» или подход «не если-то»?

5. да, вы сказали, что если что-то еще не является лучшей практикой, вот почему. Какой-нибудь другой метод написания отрицательных и положительных случаев?