Postman 实用接口测试系列 2 - 接口依赖

在接口测试中,经常会遇到接口之间存在依赖的情况,比如接口B的输入依赖于接口A的输出。这时候就涉及到接口之间数据的流动。 今天我们这一章要介绍的就是如何使用postman处理接口之间的依赖。
不过在介绍具体如何解决接口依赖的问题前,我会先介绍下一些基础知识,如果大家对于基础已经掌握了,可以直接看第三部分。

大纲:
* Postman的变量介绍
* Postman的变量的操作
* 接口依赖操作的例子

1 Postman的变量介绍

1.1 类型

Postman根据变量的作用范围,提供了5中不同类型的变量:

  • global 全局变量: 全局变量的作用范围是针对一个workspace,也就是同一个workspace内的所有的集合,请求,测试脚本,环境变量都共享。

      全局变量容易造成混淆,所以尽量避免使用,一般只有这两种情况会考虑使用全局变量,一是为了快速测试某个请求,而是你的项目还处于非常早期的原型阶段。
    
  • collection 集合变量:集合变量作用于集合这个范围,独立于environment,也就是不需要根据选择的环境不同而进行更改的变量可以放在集合里。

      适合如果只有一个环境的情况,或者虽然有多个环境,可是这个变量不会随着环境变化而变化。
    
  • environment 环境变量:如果你的变量需要根据不同的环境进行调整的话(比如local,开发环境,生产环境等),就可以选择环境变量。这个在Postman 实用接口测试系列 1 中有介绍,这里就多做讲解。

      如上面所提到的,如果你只有一个环境的话,选择集合变量更合适,可是如果你有多个环境的话,选择环境变量更好。环境变量不同于集合变量,它还可以定义不同角色的权限。
    
  • local 本地变量:是个临时变量,只在脚本中使用。是个局部变量,只在当个请求运行时或者集合运行(collection runner)时有效, 运行结束则不再可用。

      特别适合如果你希望一个值来覆盖之前的变量的值,可是又不希望脚本跑结束后依然保持不变。
    
  • data 数据变量:这个变量比较特殊,所以我最后介绍,这个指的是当我们通过Newman或者Collection Runner来批量跑请求的时候,变量从csv文件或者json文件里导入。比较适合做数据驱动的测试,这个在我们之后会介绍。

1.2 生命周期的关系

如下图所示,如果一个变量同时定义在多个地方,则会使用最里面定义的变量。例如一个叫username的变量同时定义在global 和 local里,则会使用local里定义的值。

Variable Scope

2 Postman变量操作

2.1 通过UI进行操作:

  • global 变量:

    点击右上角的眼睛图标,然后在弹出窗里点击Edit
  • collection 变量:

    选中左边栏的期望的集合,然后点击 ... ,在弹出框里点击Edit,在Edit的弹出框里点击Variables
  • environment 变量:

    1是通过点击右上角的设置图标,2是点击眼睛图标,然后点击Add

2.2 使用变量

使用双花括号就可以使用这个变量了。比如 {{username}}

2.3 通过脚本进行操作:

pm.globals.set("variable_key", "variable_value");
pm.globals.get("variable_key");

pm.collectionVariables.set("variable_key", "variable_value");
pm.collectionVariables.get("variable_key");

pm.environment.set("variable_key", "variable_value");
pm.environment.get("variable_key");

pm.variables.set("variable_key", "variable_value");
pm.variables.get("variable_key");

注意:
Postman 把环境变量和全局变量是存为string类型,如果我们要存的是一个arrays或者objects,需要使用 JSON.stringify()方法,在检索他们的时候记得使用JSON.parse()方法。

Variable Scopes

3 接口依赖的例子

前面我们介绍了这么多基础知识,现在我们使用他们来解决我们接口依赖的问题。关于这一部分,我将会举一个具体的例子来说明。

背景:

假设我们有一个login接口,它会生成token,query接口需要使用token才可以访问。也就是query接口依赖于login接口.

如何选择变量:

按照其他提到的,首先非必要情况尽量不要使用全局变量,所以全局变量排除。
其次,我们这个接口不仅仅有DEV环境,还会有QA和Prod环境,所以也排除了collection变量。
再次,我们并不希望代码跑完token的值就没了,因为除了query接口,我们还会有一系列登陆后才可以使用的接口都需要这个token。
综上,我们选择了环境变量。

步骤:

1.创建一个环境,命名为DEV
2.在login接口的test加入如下代码,导出他的token

var data \= JSON.parse(responseBody);

if(data.accessToken){

postman.setEnvironmentVariable("access-token", data.accessToken);

3.选择环境DEV,跑login接口 ,之后我们会发现环境变量里多一个一个变量叫做access-token, 同时它的值就是login接口返回的response的token

4.query接口通过{{access-token}} 使用变量

这样一个接口依赖的例子就结束啦。下一章将会介绍如何编写测试代码。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351