热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

20201217自动化测试开发文档(postman)

自动化测试开发文档(postman)文章目录软件环境运行脚本调用http(s)接口在接口调用中使用变量脚本执行顺序编写测试脚本pm对象变量处理response流程控制断言ÿ
自动化测试开发文档(postman)

文章目录

  • 软件环境
  • 运行脚本
  • 调用http(s)接口
    • 在接口调用中使用变量
  • 脚本执行顺序
  • 编写测试脚本
    • pm对象
    • 变量
    • 处理response
    • 流程控制
    • 断言(assertions)


软件环境

开发环境: postman 从官网下载安装
命令行运行环境: newman 。先安装nodejs, 再执行npm install -g newman 进行安装。

运行脚本
  1. postman运行。
    点击左上角import 将脚本导入到postman ;
    在这里插入图片描述
    导入之后,会显示在左侧菜单collections面板中
    在这里插入图片描述
    选中对应的collection , 点击右侧上方按钮,展开运行菜单,点击蓝色“run”按钮,弹出 collection runner窗口。
    在这里插入图片描述
    选择运行环境,设置运行次数等参数。如果需要在运行之前输入数据文件,可以在线选择数据文件,并指定数据格式
    在这里插入图片描述
    点击下方蓝色"Run"按钮,执行测试。
  2. newman 运行脚本
    运行命令 : newman run [脚本文件名称] -d 数据文件名称 -e 执行环境文件名称

调用http(s)接口

http接口调用是postman测试用例的最小单元。postman提供全面的http接口支持,界面如下:
在这里插入图片描述

在接口调用中使用变量

配置接口调用时可以使用各种变量。使用变量的方式: {{变量名}}。例如下图:
在这里插入图片描述
其中 apiContextPath 是定义在运行环境中的变量, request body中的 loginUserName 则是在 pre-request script中定义的临时变量。

脚本执行顺序

postman支持以javascirpt语言编写脚本。对于每一个http接口请求,有两个脚本的调用入口:pre-request script 和 tests。
pre-request script在调用http接口之前执行,可以在这里准备接口调用需要的数据;tests 在接口调用完毕之后执行,可以对接口返回结果进行校验,并根据结果进行流程控制。
执行顺序如下:
在这里插入图片描述

编写测试脚本

pm对象

在postman运行环境,有一个全局的pm对象,它的作用类似于浏览器环境下的window对象,可以以js方法的形式调用postman提供的各种功能。

变量

变量是传递数据的主要手段,按照变量的作用范围(scope),分成5种变量。全局变量, 环境变量, 集合变量, 数据变量 , 本地变量。
全局变量(global): 全局可使用,在pm.globals中管理。
环境变量(environment): 描述运行环境,在运行环境中配置。通过 pm.environment进行管理。
集合变量(collection): 集合变量在集合内所有请求都可以访问,通过pm.collectionVariables进行管理。
数据变量(data): 数据变量通过数据文件读取,通过pm.iterationData获取。
本地变量(local): 可以通过pm.variables进行赋值和更新,但使用pm.variables获取变量时, 如果变量不存在,可以获取其他作用范围的变量。
不同作用域的同名变量:不同作用域可以定义同名的变量,通过各自作用域的管理对象访问时互不冲突。在请求中使用{{变量名}}获取变量,或者使用pm.variables.get()方法获取变量时,会根据作用域的优先级,返回变量值。 作用域的优先级为: 本地 > 数据 > 集合 > 环境 > 全局。例如,我们在集合变量和环境变量都定义了一个名叫username的变量,{{username}}和 pm.variables.get(“username”)都会返回集合变量中的变量。
常用的数据操作API(以pm.globals为例,其他作用范围api基本一致):
pm.globals.has(variableName) 检查变量是否存在
pm.globals.get(variableName) 获取变量
pm.globals.set(variableName, variableValue) 设置变量值
pm.globals.unset(variableName) 删除变量
pm.globals.clear() 清空所有全局变量

处理response

在tests脚本中,我们可以获取请求返回的结果,进行处理和校验工作。

postman将它封装到pm.response对象中。

pm.response.status 响应状态

pm.reponse.json() 将json格式的响应内容转换为对象

流程控制

流程控制通过 postman.setNextRequest(requestName)方法来实现,这个方法可以指定当前请求执行完毕之后下一个运行的请求。

postman没有提供循环控制的方法,如果要实现循环调用,可以配合条件判断一起实现。

举例,我们在数据文件中定义了一个帖子信息的数组,变量名为articleList,需要循环调用“发布帖子“接口。我们可以在登陆成功之后,定义一个当前处理帖子的下标变量。在调用发布帖子接口完毕后,判断是否是最后一个帖子,如果不是,继续调用发布帖子接口。

登录接口tests 脚本:

pm.collectionVariables.set("articleIndex",0);

发布帖子接口 Pre-request script 脚本:


let artcileList = pm.itreationData.get("articleList")
pm.collectionVaribles.set("articleInfo", articleList[pm.collectionVaribles.get("articleIndex")]);

发布帖子接口tests 脚本:

//省略response处理逻辑
let articleIndex = pm.collectionVariables.get("articleIndex")
if(pm.iterationData.get("articleList").length > articleIndex + 1){pm.collectionVariables.set("articleIndex", articleIndex + 1);postman.setNextRequest("发布帖子");
}

断言(assertions)

断言是验证接口运行结果与我们的预期是否一致的工具。postman 使用 pm.test(断言名称, 断言回调函数)方法来实现断言操作。

我们可以在pre-request scripts中校验输入数据是否符合预期,在tests脚本中校验接口响应结果是否符合预期。


推荐阅读
author-avatar
淘宝休丶闲女-装店
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有