Я изо всех сил пытаюсь создать идентификатор электронной почты, состоящий из случайного имени и случайной фамилии. Я не хочу использовать динамическую переменную $randomEmail, потому что она генерирует любое случайное электронное письмо, которое полностью отличается от имени и фамилии и выглядит очень нереалистично.
У меня есть предварительный сценарий в Postman, где у меня есть две переменные среды first_name и last_name, я использую библиотеку faker для создания фиктивных данных, как показано ниже. Динамическая переменная $randomFirstName и $randomLastName генерирует и устанавливает переменные среды следующим образом. Предположим, что $randomFirstName=John и $randomLastName=Doe
postman.setEnvironmentVariable("first_name", pm.variables.replaceIn('{{$randomFirstName}}'));
postman.setEnvironmentVariable("last_name", pm.variables.replaceIn('{{$randomFirstName}}'));
Теперь я хочу использовать переменные среды first_name и last_name для использования в следующей переменной email_formatted для создания идентификатора электронной почты, состоящего из имени и фамилии.
email_formatted = "{{first_name}}" + '_' + "{{last_name}}" + '@gmail.com';
postman.setEnvironmentVariable("email", email_formatted);
console.info("Email: " + postman.getEnvironmentVariable("email"));
Однако на консоли я получаю следующий результат.
ACTUAL "Электронная почта: {{first_name}}_{{last_name}}@gmail.com"
ОЖИДАЕТСЯ "Электронная почта: John_Doe@gmail.com"
Я думаю, что делаю небольшие ошибки здесь в синтаксисе или в том, как переменные среды используются в предварительном сценарии. Спасибо, что уделили время чтению, и любые наводки будут полезны.
email_formatted = pm.environment.get("first_name") + '_' + pm.environment.get("last_name") + '@gmail.com';
pm.environment.set("email", email_formatted);
console.info("Email: " + pm.environment.get("email"));
В почтальоне мы можем ссылаться на переменную как {{имя_переменной}} только в сеансах без скриптов. В сценарии вы используете
pm.environment.get('varaiblename')
Для доступа к переменной среды, для доступа к другим переменным используйте как pm.globals, pm.variables и т. д.
Как указал Дэнни, postman переходит на новый pm.* API и собирается отказаться от поддержки postman.* в будущем.
Поэтому начните использовать новый API, так как документация значительно обновлена и доступна в основном для pm.* API.
Примечание: setnextrequest по-прежнему доступен только через почтальона.*
Итак, postman.setNextRequest работает, pm.setNextRequest не будет
Приложение почтальона имеет автоматическое предложение для pm. *, Оно показывает доступные методы, которые делают сценарии более простыми и увлекательными.
Обновлено, ответ х😁
Спасибо. В новых версиях есть автоматическое предложение в песочнице, чтобы показать, какие методы доступны в этом API.
@PDHide Отлично. Это работает. Спасибо за подробный ответ.
Если вы все еще используете старые библиотеки Postman, то следующее также будет работать.
email_formatted = postman.getEnvironmentVariable("first_name") + '_' + postman.getEnvironmentVariable("last_name") + '@' + postman.getEnvironmentVariable("environment")+ 'gmail.com';
postman.setEnvironmentVariable("email", email_formatted);
console.info("Email: " + postman.getEnvironmentVariable("email"));
Я бы рекомендовал использовать все методы get и set из нового pm.* API, а не смешивать и сопоставлять старые и новые. 😁