一.postman版本:
1.chrome插件版本:2017年不维护
2.native版本:具有更好的扩展性,推荐使用
3.区别:①native版本可以直接操作cookie,而chrome版本需要安装扩展;
②native版本自带proxy,可以用来抓包;
③有一些headers在chrome app上是受限的,比如Origin and User-Agent(浏览器版本)
④只有native才有Don't follow redirects option(不去跟随重定向)的选项,可以测试301的状态码
⑤native版本自带Postman console,用js写断言,可以打印看是否是正常进行的
二.postman安装:
下载地址:https://www.getpostman.com/apps
直接下一步安装
点击最下方:take me straight to the app进入
只支持http协议
三.发送api:
文档:https://www.v2ex.com/p/7v9TEc53
api地址:https://www.v2ex.com/api/topics/hot.json
接口的格式:headers→Content-Type:
四.http请求的构成:起始行、Headers、Body
1.起始行:三要素:
①一个http方法,一个动词(像GET、PUT或者POST)或者一个名词(像 HEAD或者OPTIONS),描述要执行的动作
②请求目标,通常是一个url,或者是协议、端口和域名的绝对路径,通常以请求的环境为特征
③http版本
2.Headers:一串由key、value和冒号组成的不区分大小写的字符串。整个headers由一行组成。这一行可以相当长。里面信息可以当成配置项
3.body:不是所有的请求都有body,例如GET、HEAD,有些请求将数据发到服务器以便更新数据:常见的情况是POST请求
五.http响应的构成:状态行、Headers、body
1.状态行:
①协议版本
②状态码
③状态文本:一个简短的状态文本,帮助理解状态码的文本描述
2.Headers:比较关注的字段(Set-Cookie)
3.Body:不是所有的响应都有body,例如状态码201、204的响应,通常不会有body
六.断言:在http响应里断言:状态码、body的返回
七.Test功能:
1.设置全局变量(例如存储cookie)
2.设置环境变量(例如使脚本能够在正式环境与测试环境执行)
3.拿到并处理请求的响应
4.定义测试检查点和断言
api文档:https://www.getpostman.com/docs/v6/postman/scripts/postman_sandbox_api_reference
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
八.set\get cookie
set cookie:服务器返回respond,header里有个指示叫set cookie,然后客户端set cookie,最终cookie是保存在客户端。
拿到cookie:
get cookie:拿到保存在客户端里面的cookie
九.鉴权-token base application:
用户名、密码登录,发请求给后台,后台返回一个token,以后所有的请求里用token去访问。
1.获取token
2.在header里设置token
十.变量:用两个大括号{{ }}表示变量
https://www.v2ex.com/api/nodes/show.json?name={{node_name}}
如果环境变量名与全局变量名重复,那么取环境变量的值(环境变量的值覆盖全局变量)
十一.Test中获取到环境变量的方法
十二.保存、运行collection
两个*号表示加粗(Markdown的语法)
数据驱动:
1.准备json脚本
2.修改代码:
3.修改run配置
十三.命令行运行
1.原因:在无UI界面的服务器上运行;可以在ci持续集成系统上运行
2.准备:①导出collection
②安装nodejs和npm
③安装newman
3.安装nodejs( LTS代表长期支持版本 ):https://nodejs.org/en/download/
简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。
新版的Node.js已自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西
使用命令:node -v npm-v 分别查看版本
4.安装newman:npm install newman --global
输入newman -h查看提示信息
5.①点击“...”,点击export,选择v2,然后将导出的json与测试数据放到同一个文件夹下
②用cmd命令进入此目录下,运行如下:
-d:导入数据
-r:导出格式
十四.生成测试报告
CLI reporter:在命令行打印出一些结果,简洁
JSON reporter:可以直接存在MongoDB里,容易帮我们做持久化;也可以解出来存在关系型数据库里。
HTML reporter:方便我们在邮件或者其它通知系统里面发给其他人员
JUnit reporter:在ci里面做集成,结束后将结果解析放到jenkins
十五.导出
1.导出成python语言,选择Requests,支持python2与python3
自动生成的代码:
import requests
url = "https://www.v2ex.com/api/nodes/show.json"
querystring = {"name":"python"}
headers = {
'Cache-Control': "no-cache",
'Postman-Token': "0d37a526-063b-4603-bd8e-e731703b4a48"
}
response = requests.request("GET", url, headers=headers, params=querystring)
print(response.text)
修改:
//python数组[],元组(),字典{}
import requests
import unittest
class V2EXTestCase(unittest.TestCase):
def test_node_api(self):
url = "https://www.v2ex.com/api/nodes/show.json"
querystring = {"name":"python"}
response = requests.request("GET", url, params=querystring).json()
if __name__ == '__main__':
unittest.main()
数据驱动:
import requests
import unittest
class V2EXTestCase(unittest.TestCase):
def test_node_api(self):
url = "https://www.v2ex.com/api/nodes/show.json"
for request in ["java", "python", "php"]:
response = requests.request("GET", url, params={'name' : request}).json()
print(response)
self.assertEqual(response["name"], request)
if __name__ == '__main__':
unittest.main()