Я смог заставить ваш пример работать, но вот лучший способ ...
основная проблема с использованием
.check(status.is(404).saveAs("NOT_FOUND"))
и
.doIf(session => session.attributes.contains("NOT_FOUND"))
для реализации условного переключения - теперь у вас есть проверка, которая приведет к сбою check_company_profile, когда это действительно не должно (например, когда вы получаете 200).
Лучше использовать проверочное преобразование для вставки логического значения в переменную NOT_FOUND. Таким образом, ваше действие check_company_profile может все еще проходить, когда офис существует, и конструкция doIf может просто использовать синтаксис EL и быть намного более понятной относительно того, почему он выполняется.
val check_company_profile: HttpRequestBuilder = http("Create Company Profile")
.get(onboarding_url_perf + "/profile")
.headers(basic_headers)
.headers(auth_headers)
.check(
status.in(200, 404), //both statuses are valid for this request
status.transform( status => 404.equals(status) ).saveAs("OFFICE_NOT_FOUND") //if the office does not exist, set a boolean flag in the session
)
теперь, когда у вас есть логическая переменная сеанса ("OFFICE_NOT_FOUND"), вы можете просто использовать ее в своем doIf ...
.doIf("${OFFICE_NOT_FOUND}") {
exec(CompanyProfileRequest.create_company_profile).exitHereIfFailed
}