一、环境变量
环境是由一组键值对形式的环境变量构成的变量组合。
在做接口测试的时候,通常需要在本地调试,或者需要在开发环境、测试环境及开发环境运行,不同的环境的域名(host)、数据库配置等设置不同。
通过配置不同的环境变量值,再在请求中使用不同的值,那么可以通过切换环境来切换不同的值,以达到不用修改任何请求就能在任意环境运行。
在打开的窗口中设置好环境名称和变量值即可:
**VARIABLE:**设置一个环境变量名称标识,通过变量名调用该变量;
INITIAL VALUE:共享 Collection 用到的值,如果不共享 Collection 可以不用设置;
**CURRENT VALUE:**当前值,用于当前 Postman 运行请求时使用的值,一般我们设置这个值;
···:这里的···按钮可以设置列的显示;
Presist All:将所有当前表格中 initial 列的共享值设置为 当前值;
Reset All:将所有当前表格中 当前值设置为 initial 列的共享值。
环境切换:
点击右上角齿轮旁边的下拉菜单可以切换环境:
切换环境后,环境变量会随着改变。
可以通过右上角的眼睛?按钮查看当前环境所有环境变量的值和全局变量的值
分享环境变量
点击右上角的齿轮打开环境编辑界面:
分享环境有两种方式,一种是点击 Share 按钮,但是这种方式需要付费才行。
第二种方式是上图中标记的位置,以 Json 文件的方式导出环境配置。
将 Json 文件分享给团队成员,其他成员通过 Postman 顶部的 Import 按钮导入环境即可。
二、变量设置
变量是用来存储动态值的静态标识符。变量标识的信息可以更改,但是对变量的操作保持不变。
我们可以在多个位置重用变量值。如果变量的值发生变化,变量的每个实例都会相应的更改,从而减少了重复修改的需要和出错的可能性。
我们还可以通过变量从一个请求中获取数据,在另一个请求中使用它们。
在 Postman 中有以下几种变量:
● 局部变量 local
data 文件中的变量 data
● 环境变量 environment
Collection 中的变量 collection
● 全局变量 global
● 内置变量 dynamic
除局部变量以外的其他变量值只能是字符串,如果要存储对象或者其他数据类型的数据,需要先转换为字符串(JSON.stringify()),然后在使用时转换回去(JSON.parse())。
变量优先级
以下的图可以说明变量的优先级,越外层的变量优先级越低。
比如同一个变量名 host,在 environment 和 global 中分别设置了不同的值,那么最终运行请求的时候,实际使用的是 environment 中的值,因为 environment 变量的优先级比 global 更高。
设置变量
1、局部变量 local variable
局部变量是在代码(Pre-request,Tests)中设置的。使用 JavaScript 的变量语法即可。
其优先级最高,但是仅在当前的脚本环境中有效,对于上图中的json变量,只在当前请求的 Tests 中的脚本有效。
2、data 文件中的变量 data
在 Collection 运行中我们讲过可以加载数据驱动的文件(CSV,JSON)中的值。
上图中通过加载的数据文件中读取出的一个变量msisdn
3、环境变量 environment
环境变量可以通过两种方式设置,一种是在环境设置中进行设置:
另一种设置环境变量的方法是,在代码(Pre-request,Tests)中设置。
上图中通过代码设置了一个变量 ip,其值为 192.168.75.29。
4、Collection 中的变量 collection
在 Collection 中可以设置变量,设置的方法是在 Collection 编辑界面的 Variables选项卡中:
上图中设置了一个 Collection 变量 ip,其值为192.168.75.29。
也可以看到这里的设置界面很类似环境变量的设置。
5、全局变量 global
全局变量的设置类似环境变量的设置,也有两种方式。
一种方法,那就是通过代码(Pre-request,Tests)设置。
上图中通过代码设置了一个全局变量 msisdn, 其值为13828789407。
另一种方法是在环境设置(就是设置环境变量那个地方)界面进行设置:
三、内置变量
内置变量dynamic variables是由 Postman 提供的大量预设变量,用来生成一些随机值,方便测试过程中通过一些重复性校验。
在构造请求的时候,输入{,就会出现这些预设变量的待选项:
Postman 提供了非常多类型的随机生成的内容,可以在测试的时候省去很多构造数据的过程。
由于这些变量如此众多,不用看完,需要的时候再来查阅即可。最重要的内容是随机生成唯一性的字符串变量。
随机唯一性字符串
这些是唯一性很强的字符串,对于一些有唯一限制的内容可以使用这些值来填充。
Variable Name | Description | Examples |
---|---|---|
$guid | uuid-v4 风格的 guid,随机性非常强 | “611c2e81-2ccb-42d8-9ddc-2d0bfa65c1b4” |
$timestamp | 时间戳 | 1562757107 , 1562757108 , 1562757109 |
$randomUUID | 随机 36 位的 UUID | “6929bb52-3ab2-448a-9796-d6480ecad36b” |
随机文字、字符串、颜色(码) | ||
Variable Name | Description | Examples |
– | – | – |
$randomAlphaNumeric | 1位随机字符或数字 | 6 , “y” , “z” |
$randomBoolean | 随机布尔值 (true/false) | true , false , false , true |
$randomInt | 1~1000 之间的随机整数 | 802 , 494 , 200 |
$randomColor | 随机颜色单词 | “red” , “fuchsia” , “grey” |
$randomHexColor | 随机颜色码 | “#47594a” , “#431e48” , “#106f21” |
$randomAbbreviation | 随机缩写 | SQL , PCI , JSON |
随机网络标识和 IP 地址 | ||
Variable Name | Description | Examples |
– | – | – |
$randomIP | 随机的 IPv4 地址 | 241.102.234.100 , 216.7.27.38 |
$randomIPV6 | 随机 IPv6 地址 | dbe2:7ae6:119b:c161:1560:6dda:3a9b:90a9 |
$randomMACAddress | 随机 MAC(物理)地址 | 33:d4:68:5f:b4:c7 , 1f:6e:db:3d:ed:fa |
$randomPassword | 由字母和数字组成的 15 位随机密码 | t9iXe7COoDKv8k3 , QAzNFQtvR9cg2rq |
$randomLocale | 随机两位字母组成的语言代码 (ISO 639-1) | “ny” , “sr” , “si” |
$randomUserAgent | 随机用户代理 | Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.9.8; rv:15.6) Gecko/20100101 Firefox/15.6.6 |
$randomProtocol | 随机协议类型 | “http” , “https” |
$randomSemver | 由数字组成的随机版本号 | 7.0.5 , 2.5.8 , 6.4.9 |
随机姓名(英文) | ||
Variable Name | Description | Examples |
– | – | – |
$randomFirstName | 随机的名字(英文) | Ethan , Chandler , Megane |
$randomLastName | 随机姓氏(英文) | Schaden , Schneider , Willms |
$randomFullName | 随机全名(名字 姓氏) | Connie Runolfsdottir , Sylvan Fay , Jonathon Kunze |
$randomNamePrefix | 随机称呼 | Dr. , Ms. , Mr. |
$randomNameSuffix | 随机姓名后缀 | I , MD , DDS |
职业 | ||
Variable Name | Description | Examples |
– | – | – |
$randomJobArea | 随机工作范围 | Mobility , Intranet , Configuration |
$randomJobDescriptor | 随机职业等级 | Forward , Corporate , Senior |
$randomJobTitle | 随机工作标题 | International Creative Liaison , |
$randomJobType | 随机工作类型 | Supervisor , Manager , Coordinator |
随机电话号码、区域、地址 | ||
Variable Name | Description | Examples |
– | – | – |
$randomPhoneNumber | 随机 10 位数字电话号码 | 700-008-5275 , 494-261-3424 , 662-302-7817 |
$randomPhoneNumberExt | 随机扩展号码(包含区号) | 27-199-983-3864 , 99-841-448-2775 |
$randomCity | 随机城市名称 | Spinkahaven , Korbinburgh , Lefflerport |
$randomStreetName | 随机街道名称 | Kuhic Island , General Street , Kendrick Springs |
$randomStreetAddress | 随机街道地址 | 5742 Harvey Streets , 47906 Wilmer Orchard |
$randomCountry | 随机国家名称 | Lao People’s Democratic Republic , Kazakhstan , Austria |
$randomCountryCode | 随机两位字符的国家编码 (ISO 3166-1 alpha-2) | CV , MD , TD |
$randomLatitude | 随机纬度 | 55.2099 , 27.3644 , -84.7514 |
$randomLongitude | 随机精度 | 40.6609 , 171.7139 , -159.9757 |
随机图片 | ||
Variable Name | Description | |
– | – | |
$randomImage | 随机图片地址 | |
$randomAvatarImage | 随机头像图片 | |
$randomImageUrl | 随机图片地址 | |
$randomAbstractImage | 随机头像缩略图 | |
$randomAnimalsImage | 随机动物图片地址 | |
$randomBusinessImage | 随机股票业务图片 | |
$randomCatsImage | 随机猫图片 | |
$randomCityImage | 随机城市图片 | |
$randomFoodImage | 随机食物图片 | |
$randomNightlifeImage | 随机夜生活图片 | |
$randomFashionImage | 随机时尚图片 | |
$randomPeopleImage | 随机人物图片 | |
$randomNatureImage | 随机自然风景图片 | |
$randomSportsImage | 随机运动图片 | |
$randomTechnicsImage | 随机科技图片 | |
$randomTransportImage | 随机交通工具图片 | |
$randomImageDataUri | 随机图片的 data 数据 |
随机金融类数据
Variable Name | Decription | Examples |
---|---|---|
$randomBankAccount | 随机的8位数字银行帐号 | 09454073 , 65653440 , 75728757 |
$randomBankAccountName | 随机的银行帐户名称(e.g. savings account, checking account) | Home Loan Account , Checking Account , Auto Loan Account |
$randomCreditCardMask | 随机屏蔽的信用卡号 | 3622 , 5815 , 6257 |
$randomBankAccountBic | 随机银行识别码 (Bank Identifier Code) | EZIAUGJ1 , KXCUTVJ1 , DIVIPLL1 |
$randomBankAccountIban | 随机 15-31位的国际银行帐号 (International Bank Account Number) | MU20ZPUN3039684000618086155TKZ |
$randomTransactionType | 随机交易类型 (e.g. invoice, payment, deposit) | invoice , payment , deposit |
$randomCurrencyCode | 随机的 3 位字母的货币代码 (ISO-4217) | CDF , ZMK , GNF |
$randomCurrencyName | 随机货币名称 | CFP Franc , Cordoba Oro , Pound Sterling |
$randomCurrencySymbol | 随机货币标志 | $ , £ |
$randomBitcoin | 随机比特币地址 | 3VB8JGT7Y4Z63U68KGGKDXMLLH5 |
随机商业数据 | ||
Variable Name | Decription | Examples |
– | – | – |
$randomCompanyName | 随机公司名称 | Johns - Kassulke , Grady LLC |
$randomCompanySuffix | 随机公司后缀(e.g. Inc, LLC, Group) | Inc , LLC , Group |
$randomBs | 随机商业用语 | killer leverage schemas , |
$randomBsAdjective | 随机商业形容词用语 | viral , 24/7 , 24/365 |
$randomBsBuzz | 随机商业流行词 | repurpose , harness , transition |
$randomBsNoun | 随机商业名词 | e-services , markets , interfaces |
随机警句(标语) | ||
Variable Name | Decription | Examples |
– | – | – |
$randomCatchPhrase | 随机名言警句 | Future-proofed heuristic open architecture , |
$randomCatchPhraseAdjective | 随机流行语形容词 | Self-enabling , Business-focused , Down-sized |
$randomCatchPhraseDescriptor | 随机流行描述符号 | bandwidth-monitored , needs-based , homogeneous |
$randomCatchPhraseNoun | 随机生成给一个流行名词 | secured line , superstructure , installation |
随机数据库相关数据 | ||
Variable Name | Decription | Examples |
– | – | – |
$randomDatabaseColumn | 随机数据库列名 | updatedAt , token , group |
$randomDatabaseType | 随机数据库类型 | tinyint , text |
$randomDatabaseCollation | 随机数据库排序规则 | cp1250_bin , utf8_general_ci , cp1250_general_ci |
$randomDatabaseEngine | 随机数据库引擎 | MyISAM , InnoDB , Memory |
随机日期
Variable Name | Decription | Examples |
---|---|---|
$randomDateFuture | 随机未来时间 | Tue Mar 17 2020 13:11:50 GMT+0530 (India Standard Time) , |
$randomDatePast | 随机过去时间 | Sat Mar 02 2019 09:09:26 GMT+0530 (India Standard Time) , |
$randomDateRecent | 随机近期时间 | Tue Jul 09 2019 23:12:37 GMT+0530 (India Standard Time) , |
$randomWeekday | 随机星期几 | Thursday , Friday , Monday |
$randomMonth | 随机月份 | February , May , January |
随机域名、电子邮件和用户名 | ||
Variable Name | Decription | Examples |
– | – | – |
$randomDomainName | 随机完整域名 | gracie.biz , armando.biz , trevor.info |
$randomDomainSuffix | 随机顶级域名 | org , net , com |
$randomDomainWord | 随机不合法域名 | gwen , jaden , donnell |
$randomEmail | 随机电子邮箱地址 | Pablo62@gmail.com , Ruthe42@hotmail.com , Iva.Kovacek61@hotmail.com |
$randomExampleEmail | 随机电子邮箱地址,域名为example | Talon28@example.com , Quinten_Kerluke45@example.net , Casey81@example.net |
$randomUserName | 随机用户名 | Jarrell.Gutkowski , Lottie.Smitham24 , Alia99 |
$randomUrl | 随机 URL 地址 | https://anais.net , https://tristin.net , http://jakob.name |
随机文件名和目录 | ||
Variable Name | Decription | Examples |
– | – | – |
$randomFileName | 随机文件名 (包括不常用的扩展名) | neural_sri_lanka_rupee_gloves.gdoc , |
$randomFileType | 随机文件类型 (包括不常用的文件类型) | model , application , video |
$randomFileExt | 随机文件扩展名 (包括不常见的文件扩展名) | war , book , fsc |
$randomCommonFileName | 随机文件名 | well_modulated.mpg4 , |
$randomCommonFileType | 随机常见文件类型 | application , audio |
$randomCommonFileExt | 随机常见文件扩展名 | m2v , wav , png |
$randomFilePath | 随机文件路径 | /home/programming_chicken.cpio , |
$randomDirectoryPath | 随机目录路径 | /usr/bin , /root , /usr/local/bin |
$randomMimeType | 随机 MIME 类型(header 中的 content-type 会用到) | audio/vnd.vmx.cvsd , |
随机物料(库存、商品等) | ||
Variable Name | Decription | Examples |
– | – | – |
$randomPrice | 随机生成 100.00 ~ 999.00 之间的价格 | 531.55 , 488.76 , 511.56 |
$randomProduct | 随机商品 | Towels , Pizza , Pants |
$randomProductAdjective | 随机商品形容词 | Unbranded , Incredible , Tasty |
$randomProductMaterial | 随机商品材料 | Steel , Plastic , Frozen |
$randomProductName | 随机商品名称 | Handmade Concrete Tuna , Refined Rubber Hat |
$randomDepartment | 随机商业分类 | Tools , Movies , Electronics |
基于英语语法的随机数据 | ||
Variable Name | Decription | Examples |
– | – | – |
$randomNoun | 随机名词 | matrix , bus , bandwidth |
$randomVerb | 随机动词 | parse , quantify , navigate |
$randomIngverb | 随机带 “-ing” 的动词 | synthesizing , navigating , backing up |
$randomAdjective | 随机形容词 | auxiliary , multi-byte , back-end |
$randomWord | 随机单词 | withdrawal , infrastructures , IB |
$randomWords | 一些随机单词构成的字符串 | Samoa Synergistic sticky copying Grocery , |
$randomPhrase | 随机短语 | You can’t program the monitor without navigating the mobile XML program! , |
随机的文本内容 | ||
Variable Name | Decription | Examples |
– | – | – |
$randomLoremWord | 随机单词 | est |
$randomLoremWords | 随机单词构成的短语 | vel repellat nobis |
$randomLoremSentence | 随机单词构成的句子 | Molestias consequuntur nisi non quod. |
$randomLoremSentences | 随机 2~6 条句子构成的段落 | Et sint voluptas similique iure amet perspiciatis vero sequi atque. Ut porro sit et hic. Neque aspernatur vitae fugiat ut dolore et veritatis. Ab iusto ex delectus animi. Voluptates nisi iusto. Impedit quod quae voluptate qui. |
$randomLoremParagraph | 随机单词构成的一段话 | Ab aliquid odio iste quo voluptas voluptatem dignissimos velit. Recusandae facilis qui commodi ea magnam enim nostrum quia quis. Nihil est suscipit assumenda ut voluptatem sed. Esse ab voluptas odit qui molestiae. Rem est nesciunt est quis ipsam expedita consequuntur. |
$randomLoremParagraphs | 随机单词构成的 3 个段落 | Voluptatem rem magnam aliquam ab id aut quaerat. Placeat provident possimus voluptatibus dicta velit non aut quasi. Mollitia et aliquam expedita sunt dolores nam consequuntur. Nam dolorum delectus ipsam repudiandae et ipsam ut voluptatum totam. Nobis labore labore recusandae ipsam quo. |
$randomLoremText | 随机单词构成的文本 | Quisquam asperiores exercitationem ut ipsum. Aut eius nesciunt. Et reiciendis aut alias eaque. Nihil amet laboriosam pariatur eligendi. Sunt ullam ut sint natus ducimus. Voluptas harum aspernatur soluta rem nam. |
$randomLoremSlug | 随机单词构成的 URL 部分 | eos-aperiam-accusamus , beatae-id-molestiae , qui-est-repellat |
$randomLoremLines | 由随机单词构成的 1~5 行数据(用回车符分隔) | Ducimus in ut mollitia.\nA itaque non.\nHarum temporibus nihil voluptas.\nIste in sed et |
四、变量的使用
首先变量要遵循我们前面提到的优先级:
局部变量 local > data 文件中的变量 data > 环境变量 environment > Collection 中的变量
collection > 全局变量 global
优先级是针对不同级别的变量中都设置了相同的变量名的情况,在使用时才会有优先级之分,如果每个环境的变量名不同,那么也不会互相影响。
只是说在遇到变量时,找变量的过程是从局部到全局的顺序,在某一级找到对应的变量名,就会使用哪一级的变量。
使用变量有两种方式,一种是在请求中使用,另一种是在代码(Pre-request Script 和 Tests)中使用。
在请求中使用
在请求中使用变量 variable,使用两对大括号标识{{变量名}}。
以下是变量设置、变量使用及实际运行时的变量取值的综合图:
图片说明: 上图中设置了一个名为 test 的环境,其中有三个变量,分别是host,path,value; 新建了一个请求,名为POST
Form Data的请求,其中 URL 使用了host和path两个变量,body 中使用了value变量;
最后运行请求后,三个变量都由环境中设置的值替换。
在代码(Pre-request Script 和 Tests)中使用变量
在代码中调用变量,需要使用 Postman 预设的代码pm.environment.get(“变量名”),以上面的请求和变量为例:
var v = pm.environment.get("value"); // 获取环境变量 value 的值并存在局部变量 v 中
console.log('value变量的值为:', value) // 打印变量值
环境变量和全局变量必须使用预设的代码获取:
环境变量:pm.environment.get(“变量名”)
全局变量:pm.globals.get(“变量名”)
上述代码都可以从 Tests 右侧的预设代码中获取:
还有一种变量在 Tests 中使用也需要通过代码获取,那就是通过数据文件传递的 Data 变量,其使用的预设代码为:
pm.iterationData.get("变量名")
内置变量使用
Postman 中有很多内置变量,用来生成随机数据。这些内置变量只能用于请求中的 URL / headers / body 中使用,不能在代码中使用。
在请求中使用: