Чтобы это работало, вам нужно будет использовать переменную сеанса для хранения вашего authHeader. Методы DSL определяют компоновщики, которые выполняются только один раз - что объясняет то, что вы видите.
Лучший способ сделать это - создать фидер для хранения ваших идентификаторов и токенов аутентификации (я полагаю, вывы больше нигде не используете идентификатор)
Итак, определите фидер, который отображает ключ (просто строку) на карту, содержащую идентификатор и токен авторизации
//a list of strings to hold the auth tokens
private val ids = List(Map("id" -> "id1", "auth" -> "token1"), Map("id" -> "id2", "auth" -> "token2"), ...)
//the feeder to put a random token into the session
private val idFeeder = Iterator.continually(Map("id" -> Random.shuffle(ids).head))
, теперь, когда вывызов .feed на idFeeder вы получаете случайную карту, которая имеет ключи для «id» и «auth» в переменной сеанса «id»
, поэтому обновите ваш сценарий, чтобы использовать фидер и установить заголовок авторизации (и удалить.authorizationHeader из определения вашего протокола)
val scn1: ScenarioBuilder = scenario("name")
.feed(idFeeder)
.exec(http("scenario1")
.header("Authorization", "${id.auth})"
.post(device_context)
.body(payload)
.check(status.is(202)))
в вашем теле вы можете получить доступ к строке идентификатора пользователя с помощью "$ {id.id}"
или вы можете обновить определение протокола, чтобыссылка $ {id}, но я считаю, что лучше использовать значение фидера в том же блоке, что и при вызове .feed