Фон
Привет, я новичок в Cypress, и у меня есть следующий код, который позволяет указанному типу пользователя (из 4 всего) войти в систему.
Поскольку это один из основных тестов, вместо того, чтобы копировать и вставлять один и тот же код в каждый из моих новых тестов, я хотел бы сделать их повторно используемыми, чтобы в будущих тестах их можно было использовать или " позвонил снова.
Будет проще хранить эти тесты в отдельной папке и отдельных файлах, чтобы они могли обслуживаться самостоятельно, но при необходимости иметь возможность вызывать их в любых будущих файлах тестов, которые я создал.
Например, если у меня есть будущий тест, относящийся к учителю, я могу вызвать функцию, которая выполняет вход для учителя, и затем начать писать оставшуюся часть сценария, которая на самом деле имеет дело с тестом, без необходимости возиться с копированием и вставкой каждый раз.
Блок кода, выполняющий часть входа в систему, приведен ниже (и практически одинаков для всех других типов пользователей)
Я пытался исследовать, как создавать методы и функции, но не слишком уверен в структуре, которую я должен использовать, и посмотрел на документацию, но я немного озадачен.
describe('Create Homework', function() {
it('Create New Assignment', function() {
cy.visit('http://www.demoapp.com')
cy.contains('Log in')
// Check that the user has indeed landed on the login page
cy.url().should('include','/login')
// Make a school selection
cy.get('#school-selector-search-box')
.type('Bristol Free School')
// Click the suggestion
.get('.suggestions > .ember-view.suggestion:nth-of-type(1) > .suggested-school-name').click()
// Enter a username at this step
cy.get('#identification')
.type('gdawson_4319c')
.should ('have.value','gdawson_4319c')
// Enter a password at this step
cy.get('#password')
.type('demo')
.should ('have.value','demo')
// Proceed to login to account
cy.get('.actions > .btn').click()
// Assert that Dashboard is visible
cy.get('h1.main-header-title')
cy.contains ('Dashboard')
})
})
Результат
Иметь возможность обернуть вышеупомянутый код во что-то (например, функцию), что сделало бы его многократно используемым, чтобы я мог использовать эти шаги в другом тесте без необходимости вручную копировать и вставлять его. Это означает, что я могу переместить их в отдельный файл и вызывать их только тогда, когда мне нужно выполнить эти шаги, что сэкономит мне время.