单个接口测试

单个接口,可以在Chrome浏览器里面直接通过开发者工具,然后选择copy as curl,然后在postman里面使用import--->paste raw text,然后倒入就可以生成全部的该接口的请求参数,从header到form表单。

postman请求转python postman 转curl_postman请求转python

postman请求转python postman 转curl_官网_02

下面为导入后的效果:

postman请求转python postman 转curl_postman请求转python_03

管理多个接口

可以使用postman的collection,这个东西就是postman为了管理多个相关接口弄出来的东西。

这一组接口,可以使用一些共用的参数,比如下图:

postman请求转python postman 转curl_postman请求转python_04

可以使用公共变量,这些变量的使用方法是{{XXX}},在需要的地方添加即可,但是需要注意collection范围内有效。

postman这里的认证方式,提供了多种,我们比较常用的是使用父级collection的认证,或者在header里面添加一些关键id参数,比如下图这样的设置,这样就方便我们可以多个接口不用挨个设置关键id了。

postman请求转python postman 转curl_JSON_05

抓取网络请求

从官网的介绍来看,目前只支持http的抓取,HTTPS还在开发中,看官网的开发进度大概是1个季度后,就可以支持了。当然不支持HTTPS目前来说这个抓取是比较鸡肋的,当然他也支持手机端抓取,现在看也没有意义了。

postman抓取网络请求的方式分2步:第一步:postman自己的设置,如下图所示。

postman请求转python postman 转curl_JSON_06

第二步:在自己的浏览器设置对应的代理,比如Chrome浏览器,我这边是Mac,Windows下面直接修改IE的设置即可。

postman请求转python postman 转curl_官网_07

----------

附:官网的开发进度:这个mid Term,他自己的注释里面说明是季度性的完成进度。

postman请求转python postman 转curl_JSON_08

快速导入接口请求到postman

postman不支持批量导入多个curl的接口,这是官方说法,貌似没有批量导入的标准格式。所以不太好用。不过国内有曲线救国的。http://www.51testing.com/html/87/n-4462487.html

感兴趣的自己研究了,不咋好,不细看了。

postman请求转python postman 转curl_postman请求转python_09

postman请求转python postman 转curl_JSON_10

 生成token

postman可以在接口请求之前,生成token,然后添加到请求头里面去。

但是脚本需要用JS编写,如下为示例代码:

// JWT generation script adapted from https://gist.github.com/corbanb/db03150abbe899285d6a86cc480f674dvar
jwtSecret = pm.environment.get('jwt_secret') || ''
// Set headers for JWT
var header = {'typ': 'JWT', 'alg': 'HS256'};
// Prepare timestamp in secondsvar
currentTimestamp = Math.floor(Date.now() / 1000)
// expiry time is 30 seconds from time of creation
var data = {
    'iss': pm.environment.get('jwt_iss') || '',
    'ist': pm.environment.get('jwt_ist') || '',
    'iat': currentTimestamp,
    'exp': currentTimestamp + 30,
    'jti': 'jwt_nonce'
}

function base64url(source) {
// Encode in classical base64
    encodedSource = CryptoJS.enc.Base64.stringify(source)
// Remove padding equal characters
    encodedSource = encodedSource.replace(/=+$/, '')
// Replace characters according to base64url specifications
    encodedSource = encodedSource.replace(/\+/g, '-')
    encodedSource = encodedSource.replace(/\//g, '_')
    return encodedSource
}

// encode header
var stringifiedHeader = CryptoJS.enc.Utf8.parse(JSON.stringify(header))
var encodedHeader = base64url(stringifiedHeader)

// encode data
var stringifiedData = CryptoJS.enc.Utf8.parse(JSON.stringify(data))
var encodedData = base64url(stringifiedData)

// build token
var token = `${encodedHeader}.${encodedData}`

// sign token
var signature = CryptoJS.HmacSHA256(token, jwtSecret)
signature = base64url(signature)
var signedToken = `${token}.${signature}`

pm.environment.set('jwt_signed', signedToken)
console.log('Signed and encoded JWT', signedToken)

这个会在发起请求之前运行

postman请求转python postman 转curl_postman请求转python_11

问题是,你需要使用JS编写脚本,这个就有点麻烦,因为大部分token是后端业务写的,也就是基本是Java代码,开发给你Java代码,你要改成JS代码。这个要求就有点高了。

如果我们只是创建一个变量或者获取一个系统变量,那简单,右边有快捷键。

postman请求转python postman 转curl_postman请求转python_12

断言接口请求结果

postman还可以做断言,断言就是在接口请求完成后,直接做Tests,这样的话就可以直接把接口请求的结果断言了,比如里面包含关键参数,或者状态码,或者响应时间。下图所示为从右边直接点击后,创建的。

postman请求转python postman 转curl_官网_13

批量执行多个接口请求

postman还可以批量执行多个接口请求,这样的话,就可以方便我们一次性执行多个接口后,做对应的接口自动化测试了。

他批量的方式就是选择collection,然后直接run collection。

postman请求转python postman 转curl_postman请求转python_14

在对应的collection runner里面,点击run就可以了。

postman请求转python postman 转curl_postman请求转python_15

如果需要的话,还可以设置参数,比如执行几遍,保留响应结果,或者选择对应的环境,比如开发环境、测试环境、预发布环境、线上环境等。

其他

1.postman还可以设置mock server,这个mock的意思就是当前服务器没有开发完成,使用postman弄的临时的,当使用postman发起对应的接口请求时,postman会直接拦截,然后通过设置好的mock server去处理后,返回对应的response。

这是postman的高级用法,postma让注册账号后才行,因为网络原因,这里注册失败就不演示了。

2.postman里面的这些写法都可以参考模板,也就是下图所示位置的,直接获取后,比着葫芦画瓢就行。总体来说postman发展的速度还是很快,功能也越来越强大了。

postman请求转python postman 转curl_Java_16

3.postman还支持跟Jenkins集成,集成的方式,就是让Jenkins去执行postman命令行下面的工具,Newman