热门标签 | 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脚本中校验接口响应结果是否符合预期。


推荐阅读
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • Android获取app应用程序大小的方法
    Android获取app应用程序大小的方法-Android对这种方法进行了封装,我们没有权限去调用这个方法,所以我们只能通过AIDL,然后利用Java的反射机制去调用系统级的方法。 ... [详细]
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社区 版权所有