#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. да, вы сказали, что если что-то еще не является лучшей практикой, вот почему. Какой-нибудь другой метод написания отрицательных и положительных случаев?