Я использую каратэ для написания интеграционных тестов для REST API.Во всех тестовых сценариях я должен входить в систему, чтобы пользователи получали токен аутентификации для всех вызовов, связанных с REST API.Поэтому я хочу поместить логику входа в систему в отдельную функцию каратэ, чтобы мне не пришлось копировать и вставлять вызов API входа в систему для всех других сценариев.
Из доку я смог выяснить, каквызовите мой login.feature в другой функции (выход из системы, когда необходимо войти в систему).Я также могу передать имя пользователя и пароль вызываемому login.feature из моего вызывающего logout.feature.Но я также хочу, чтобы мой login.feature выполнялся сам по себе, поэтому я должен определить имя пользователя и пароль в login.feature.Но если я это сделаю, я не смогу переопределить эти переменные из вызывающей функции.
Если я запускаю logout.feature, как показано ниже, то login.feature не использует параметр электронной почты, который я предоставляюв logout.feature Если я удаляю переменную электронной почты из login.feature, она использует параметр из logout.feature, но тогда я не могу запустить login.feature самостоятельно.
Вызов выхода из системы.особенность:
Feature: Login/Logout Test
Background:
* url urlBase http://localhost:5000
* def login = call read('classpath:ires/session/login.feature') {email: "user1@test.com", password: "test"}
* def authToken = login.authToken
Scenario: Testing logout via PUT
Given path '/sessions/logout'
Given param TOKEN = authToken
And request {}
When method PUT
Then status 202
Вызывается login.feature:
Feature: Logs in the given user
Background:
* url urlBase http://localhost:5000
* def email = "user2@test.com"
* def password = "test"
Scenario: Test login via POST
Given path '/sessions/login'
And request {email: '#(email)', password: '#(password)'}
And print email
When method post
Then status 200
And def authToken = response