【技术博客】Postman接口测试教程 - 环境、附加验证、文件上传测试

Postman接口测试教程 - 环境、附加验证、文件上传测试

v1.0

作者:ZBW


前言

利用Postman和Jmeter进行接口性能测试之后,我们发现Postman作为一款入门容易的工具,其内置的一些高级功能足够帮助我们对网站进行全面的接口测试。本文首先将介绍两个比较关键的功能:环境(Environment)和附加代码(Pre-request Script和Tests),这两个功能能够帮助我们对接口进行更加复杂的验证,如验证接口返回的信息等。除此之外,本文还将介绍文件上传测试的运行方式。

注:本文使用Native版本的Postman,以保证功能含有尽可能少的Bug。

配置和使用环境(Environment)

介绍

设想这样的两个场景:

  • 当我们的项目在开发服务器上开发基本完成,决定向发布服务器部署时,我们不仅想测试开发服务器的功能,还想将同样的测试应用到部署服务器上。当测试样例数目很多时,手动修改每个测试中的域名无疑是一件工作量很大而又浪费时间的事情。
  • 我们的测试有前后依赖关系,后面的测试需要依赖前面测试返回的内容才可以继续运行。

Postman中提供了变量(Variable)的概念,专门用于解决以上的问题。特别地,Postman将一组变量成为一个环境(Environment)。具体的说,一个环境可以是一组经常被复用的键值对,也可以是将前后测试关联起来的内容。

使用

1.新建环境

打开Postman,可以看到右上角有No Environment字样,说明我们目前没有应用任何环境变量。

点击齿轮图表打开环境的管理页面:

进入后点击Add可以新建一个环境,并看到如下界面。在该界面中可以设置变量的名称、初值、当前值。点击Add保存。如果点击Globals可以配置全局的变量。

2.切换环境

回到开始的界面,点击No Environment字样可以看到刚刚新建的环境,选中即可应用。

3.应用变量

Postman中以{{}}括起来的内容即为变量。这些内容可以出现在任何地方,包括域名、请求头、请求参数以及后文叙述的脚本代码中。例如如果我们想解决以上的第一个问题,可以将每个请求的域名字段改为

{{domain}}/api/to/test

之后配置不同的环境,分别有domain变量指向不同网址即可。

配置请求前/后脚本

介绍

同样,试想如下的场景:

  • 我们的请求头中需要包含当前时间戳,以方便服务器进行验证。但每次运行测试都要输入一下时间戳非常麻烦,且不够准确。
  • 我们的请求无论结果正确与错误与否都会返回HTTP 200,而正确与错误由返回内容的部分字段确定,在错误时会返回一个错误码用于区别错误类型。需要测试工具有对响应内容进行验证的能力。
  • 还是之前的前后测试关联问题,需要有工具帮忙记录之前请求返回的变量。

以上的场景分别可以使用Postman附带的请求前脚本和请求后测试脚本来实现。这两者本质上都是一段Javascript代码,由Postman在请求发起前后放在沙盒(Postman Sandbox)中代为执行,并可通过应用Postman对象获取及修改测试相关的一些信息。

使用

请求前/后脚本的修改均位于配置请求的页面上,如图所示。

请求前脚本(Pre-request Scripts)

以前述的获取时间为例。可以按如下方式编写脚本,并且在请求头中使用{{timestamp}}获取值。

pm.environment.set('timestamp', new Date());

该段代码中pm为Postman对象,environment可以获取当前使用的环境变量,set方法可以用于设置一个环境变量。

这样当运行测试时就会先运行这段代码获取时间并赋给timestamp变量。

请求后脚本(Tests)

我们的项目中定义了一些错误码,可以通过错误码验证服务端是否返回错误信息。

1.例如在生成报告的测试中Tests部分添加如下代码

var jsonData = pm.response.json();

pm.test("Status is right", function () {
    pm.expect(jsonData.status).to.eql("success");
});

pm.test("Errorcode is right", function () {
    pm.expect(jsonData.errorcode).to.eql("0000");
});

pm.test("ExperimentId is right", function () {
    pm.expect(jsonData.experimentId).to.eql("2110114");
});

pm.test("Return a pdf link", function () {
    pm.expect(jsonData.link).to.include(".pdf");
});

其中pm.response.json()可以获取返回的响应信息并转为JSON对象。之后使用test方法和expect等函数对结果进行验证。expect类似于断言,当在Runner中运行时如果出现检查不过则测试即使返回HTTP 200 结果也为失败(Fail)。

2.这里的代码还可以用于关联测试。以我们的测试中获取生成报告的链接为例。我们首先请求生成报告的接口,生成一个报告,之后收藏这一报告。

在生成报告的请求的Tests字段中配置

pm.environment.set("pdflink", jsonData.link);
pm.environment.set("reportId", jsonData.experimentId);

并在之后的收藏测试中请求信息为:

link={{pdflink}}&reportId={{reportId}}

这样以来便可以将之前响应结果传入后续测试中。

文件上传类测试

配置文件上传测试的方式主要分两步。

1.确定/配置工作路径

打开Postman的设置,可以看到Working Directory的设置内容。这里是Postman有权限读取的文件位置,可以将相关上传的文件放在这里。

2.在测试中添加文件

在form-data类的请求体中,可以将Key的类型设置为File,之后点击选择文件便可以增加文件了。

特别地,在该测试导出后,如果别人导入到另一台电脑进行测试,那么文件将从其电脑上设置的Postman工作目录下读取。

原文地址:https://www.cnblogs.com/hardchoice/p/11042356.html

时间: 2024-12-28 16:38:47

【技术博客】Postman接口测试教程 - 环境、附加验证、文件上传测试的相关文章

SpringBoot图文教程4—SpringBoot 实现文件上传下载

有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 大哥大姐新年好,点赞转发不要少 SpringBoot 图文系列教程技术大纲 鹿老师的Java笔记 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」 SpringBoot图文教程2—日志的使用「logback」「log4j」 Sp

如何使用PHP上传文件,上传图片,php上传教程,php表单文件上传教程

使用PHP进行文件上传,主要使用到表单功能和PHP内置的$_FILES函数功能.接下来我们看如何实现PHP上传功能.例子效果图,此例子是在Mac下进行调试成功的. PHP上传图片文件的功能代码如下: <html> <head> <meta charset="utf-8"> <title>Upload File Example</title> <style> body{ width:500px; margin:20p

开通技术博客之旅

记得孔子在论语中说过温故而知新,可以为师矣.为不为师我不知道. 我认为温故而知新有三解:一为“温故才知新”:温习已学的知识,并且由其中获得新的领悟:二为“温故及知新”:一方面要温习典章故事,另一方面又努力撷取新的知识.三为,温故,知新.随着自己阅历的丰富和理解能力的提高,回头再看以前看过的知识,总能从中体会到更多的东西.   合并这三种解法,也许更为完整:在能力范围以内,尽量广泛阅览典籍,反复思考其中的涵义,对已经听闻的知识,也要定期复习,期能有心得.有领悟:并且也要尽力吸收新知:如此则近可以开

文件上传利器SWFUpload入门简易教程

凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较Ajax要麻烦许多,而且其提交方式依然在底层是使用的表单file,这里我们不详谈.而且如果是提交较小的文件,我们能接受,如果提交的文件较大,我 们便要忍受很长的等待时间,而浏览器却没有任何提示,我们也没有办法知道文件上传的进度… 但是现在,网上出现了一个名为SWFUpload的上传组件,该组件利用Fl

Spring MVC环境中文件上传大小和文件类型限制以及超大文件上传bug问题

    在上一篇文章中,主要介绍了Spirng MVC环境下的正常情况下文件上传功能实现.在实际开发的时候,还会涉及到上传文件大小和类型的限制,接下来就会对Spirng MVC环境下文件上传大小和类型的限制进行介绍,还会讲解到文件上传大小tomcat服务器bug问题及解决方案. 一.文件上传大小限制 这里还是接着上篇文章先介绍Spring MVC下的文件上传大小限制,文件上传大小的限制在springmvc-config.xml中配置文件解析器CommonsMultipartResolver时即可

春哥技术博客:宝塔Linux如何修改SSH端口号教程

今天春哥技术博客就客户咨询关于如何修改设置宝塔Linux默认SSH端口号的问题,下面春哥统一写文章教程,大家直接看就可以了. 为了提供服务器的安全性,部分站长需要修改SSH端口,默认端口为22,怎么修改SSH自定义端口呢,比如修改为8899,是否需要在防火墙放行? 其实和其他端口放行操作方法一样的,直接在宝塔的防火墙里面放行就可以了.具体操作方法如下: 登陆宝塔面板后台,在顶部有是否启动SSH 和 SSH 端口 22 这两个操作按钮如上图:直接将22改为自定义端口,然后点击 更改 .宝塔防火墙自

手把手教你建github技术博客by hexo

适合人群 喜欢写Blog的人 有一定的编程基础 爱折腾的人 熟练使用版本控制Git 了解使用Github 熟悉基本的MarkDown语法 环境准备 安装Git 下载 msysgit 并执行即可完成安装. 安装Node.js 在 Windows 环境下安装 Node.js 非常简单,仅须下载安装文件并执行即可完成安装. 安装hexo 利用 npm 命令即可安装.(在任意位置点击鼠标右键,选择Git bash) npm install -g hexo 问题 * npm ERR! registry e

0成本搭建个人技术博客和个人网站

摘要: 首先送上我的个人博客先睹为快 鲁边的个人博客 说说搭建个人博客的初衷,前段时间发现自己在博客网站上的文章配图没了,感觉很不可思议,就萌生了这样的想法,但真正驱使我去行动起来的原因是,最近有一次我发表了一篇文章,结果还要审核,最后告诉我审核不通过,好吧,我换了一个博客发表,结果给我封号了,封号了,心情一时难以言表.于是愤而起身,决定亲自搭建一个博客. 下面我们看正文. 一.前言 如果时间算是成本的话,那我的标题可能起错了. 1.1.为什么要搭建博客 相比较CSDN博客园简书而言,个人博客是

技术博客与技术日记

最近开始写技术日记了:posebear1990.github.io 写技术日志的想法是来自于 @joyeecheung 妹子的日志 从技术博客到技术日记 ,虽然和她年龄相仿,但是能力见识真的是差了好几个量级.很快就觉得:前路已经铺好,我甚至都不用想着超越她,只管去跟随这样优秀者就好了.对于我来说技术日记的好处也是不少: 最痛心疾首的其实是博客园自带的编辑器,实在太难用了,虽然可以使用Live Writer,但是还是感觉太重了,有段时间看到类似word的界面就联想到了缓慢的启动速度,顿时写点东西的