У меня есть сценарий, в котором есть несколько шагов / необходимо выполнить операции REST для завершения одного процесса.
Каждая операция REST должна иметь авторизационные имя пользователя и пароль. Я предоставил это в Background сессии. Вот так выглядит моя нынешняя особенность.
Feature: Adding to cart
Background:
* url 'https://soa-mp-rmsk-someurl.com'
* header agent_uid = 'AUTO_TST'
* configure ssl = true
* header Authorization = call read('classpath:Project/JSFiles/auth.js') { username: 'ABC', password: '123' }
* configure logPrettyResponse = true
* configure logPrettyRequest = true
Scenario: Find available mobiles
Given path '/v1/available-mobiles'
When method get
Then status 200
* def mobile = response.iPhoneXSMax
# Add a mobile to cart
Given path '/v1/mobiles/'+mobile+'/add
And request {name: 'iPhoneXSMax'}
When method put
Then status 200
Теперь выдается ошибка, говорящая, что "faultstring": "Authentication challenge issued"
.
Я могу сгруппировать их в разные сценарии, чтобы они вызывали header authorization
каждый раз, что приводит к успешному запуску; Я тоже это попробовал. Работает для меня. Но я не считаю хорошей практикой группировать эти шаги в разных сценариях, поскольку они буквально составляют один сценарий. Как я могу преодолеть эту ошибку? Или я должен пойти и распространять их в разных сценариях?
https://automationpanda.com/2018/02/03/are-gherkin-scenarios-with-multiple-when-then-pairs-okay/
EDIT-1
Вот как я пытался добавить заголовки конфигурации для деталей авторизации; Я не смог полностью понять это, не могли бы вы помочь?
headers.js
function fn() {
var username = karate.get('username');
var password = karate.get('password');
if (username && password) {
return {
Authorization: username + password
};
} else {
return {};
}
}
И я назвал это в фоновом режиме вот так; но не сработало.
* configure headers = read('classpath:headers.js')
* def username = 'ABC'
* def password = '123'