赞
踩
Postman是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易 用性好 。无论是开发人员进行接口调试,还是测试人员做接口测试,Postman都是我们的首选工具 之一 。 更早的接入测试,更早的发现问题。修改问题的代价更小。保证安全性,更容易实现自动化。 接口测试更多的检测外部系统和系统间,以及内部各个子系统间的交互点。 测试重点:接口参数传递的正确定,接口功能实现的正确性,输出结果的正确性,对各种异常 情况的容错处理的完整性和合理性。
API:application programming interface。是服务器端预先定义好的方法,是交互的桥梁。
目录
进入到Postman主界面,Postman安装成功
注册后使用账号
对一个或多个系统中有很多测试用例进行维护时,应对用例进行分类管理, 并且可以用这批测试进行回归测试。Postman提供了Collection集合功能。 使用场景:
点击Collection,点击+New Collection,在弹出的输入框中输入 Collection名称(所测试的系统)。 选中新建的Collection右键,点击Add Folder,在弹出对话框中输入文件夹名称 (系统中的模块)。选中新建的文件夹, 点击Add Request ,在弹出的对话框中输 入请求名称,这个就是我们所测试的接口, 也可以理解为测试用例
批量执行接口请求: 1. 右击run collection 2. 会出现runner标签页
所谓的查询参数,其实就是URL地址中问号(?)后面的部分就叫查询参数, http://cx.shouji.360.cn/phonearea.php?number=13012345678 。查询参是:number=13012345678 。 而这一部分是由有键值对组成,格式为:key1=value1&key2=value2, 如果有多组键值对,要用&隔开 。
常见的请求方式:
1. GET 获取资源 2. POST 新建/更新资源 3. PUT 更新资源 4. DELETE 删除资源 5. HEAD 获取头部信息
轻量级的理想的数据交换格式,大部分的接口应用使用了json格式数据,可以使用 https://www.bejson.com/ 进行格式校验
在线测试JSON书写矫正工具:在线JSON校验格式化工具(Be JSON)
结构: 对象:{key:value} 数组:[data1,data2] 示例:第一个例子
添加FORM格式请求参数
3. body-raw-json
- https://www.bejson.com/
-
- {
- "phone": "13861242661" ,
- "email": "13861242661@qq.com" ,
- "nick": "abc" ,
- "password": "12345" ,
- "password2": 12345
- }
用POST登陆账户
用GET查看用户信息:
查看token值是否一样
在做接口测试时,我们经常会遇到需要上传文件的接口,比如微信的更新头像。这就需要用到: multipart/form-data。它也属于一种表单,但它既支持表单请求,也支持文件上传。
1. 添加文件格式请求参数 2. 选择body-form data 3. key中输入file 4. 导入文件 5. 点击send
在做接口测试时,我们经常会遇到需要上传文件的接口,比如微信的更新头像。这就需要用到: multipart/form-data。它也属于一种表单,但它既支持表单请求,也支持文件上传。
修改用户密码:
具体postman用法可以查看网页星瀚接口文档 (nnzhp.cn)查看相关解释
GET请求方式和POST请求方式的区别:
(1)GET请求没有请求体,只要请求头和URL:host/api/xxx?name=xxx
(2)POST请求是有请求头、请求体
(3)GET请求没有POST请求安全
(4)GET请求有参数长度限制,POST没有
(5)本质区别是传参方式不一样:
get: 地址栏 ?的方式传参,多个参数用&相连
post:body里面以表单的方式传参
响应数据是发送请求后经过服务器处理后返回的结果,响应由三部分组成,分别是状态行、响 应头、响应体。我们来看下Postman的响应数据展示。
响应数据是发送请求后经过服务器处理后返回的结果,响应由三部分组成,分别是状态行、响 应头、响应体。我们来看下Postman的响应数据展示。
如果没有断言,只能做单一的接口的功能测试,有了断言后,就为我们做自 动化提供了条件。 Postman断言:
变量可以使我们在请求或脚本中存储和重复使用其值,通过将值保存在变量 中,可以在集合,环境或请求中引用。 在Postman常用的三种变量分别是全局变量,环境变量,集合变量 。
在右上角可以快速查看变量值情况 在右侧快捷方式中可在脚本中设置变量值
选择一个集合,打开查看更多动作(...)菜单,然后点击编辑 。选择“变量”选项卡以编 辑或添加到集合变量。
方法二:在Pre-request Script处编辑脚本
在Tests,Pre-requests Script:
定义变量:
使用变量:
如果是在编写代码的位置(Tests,Pre-requests Script)获取变量,获取不同类型的变量,编写 的代码都不相同,具体如下:
前置脚本其实就是在Pre-requests Script中编写的JavaScript脚本。 一个请求在发送之前,会先去执行Pre Request Script(前置脚本)中的代 码 。 主要场景:
在请求接口之前对请求数据进行加工处理都可以使用前置脚本功能。
方法二:在Pre-request Script处编辑脚本
- function GetRandomNum(Min,Max){
- var Range = Max-Min;
- var Rand = Math.random()
- return (Min+Math.round(Rand*Range));
- }
-
- var tel = GetRandomNum(10000000000,19999999999);
- pm.environment.set("tel", tel);
- console.log(tel)
查看生成学生信息
由于截图找不到了,实际上控制板返回的值要和查询的值是保持一致的
打开Postman,获取mock地址
新增mock
得到mock地址
回到collection页签:
全代码
- from flask import Flask
- from flask import request,jsonify
- from flask_jwt_extended import JWTManager,create_access_token,jwt_required,get_jwt_identity
- from datetime import timedelta
-
- accounts = [{"phone":"18005201314","email":"3451109549@qq.com","nick":"abc","password":"12345","password2":"12345"}]
-
- app = Flask(__name__)
-
- app.config['JWT_SECRET_KEY'] = 'your-super-secret-key' #用于签名token的密钥
- app.config['JWT_ACCESS_TOKEN_EXPIRES'] = timedelta(minutes=30)
- app.config['JWT_REFRESH_TOKEN_EXPIRES'] = timedelta(days=7)
-
- jwt = JWTManager(app)
-
- @app.route('/')
- def hello_world():
- return 'Hello World!'
-
- @app.route('/get_all_account',methods=['GET'])
- def get_all():
- return f"{accounts}"
-
- @app.route('/get_account', methods=['GET'])
- def get_account():
- nick = request.args.get("nick")
- result = [d for d in accounts if d.get("nick") == nick]
- if result:
- return result
- else:
- return "无法查询"
-
- # 注册功能
- @app.route('/register', methods=['POST'])
- def register():
- get_data = request.json
- phone = get_data['phone']
- email = get_data['email']
- nick = get_data['nick']
- password = get_data['password']
- password2 = get_data['password2']
- repeat = next((acc for acc in accounts if acc['nick'] == nick), None)
- if repeat:
- return "昵称已被注册"
- account_add = {"phone": phone, "email": email, "nick": nick, "password": password, "password2": password2}
- accounts.append(account_add)
- return f"{accounts}"
-
- @app.route('/login',methods=['POST'])
- def login():
- get_data = request.json
- nick = get_data['nick']
- password = get_data['password']
-
- result = [d for d in accounts if d.get("nick") == nick]
- if result[0]['password'] ==password:
- access_token = create_access_token(identity=nick)
- return jsonify(access_token= access_token),200
- else:
- return jsonify('wrong password'),403
-
- @app.route('/protected',methods = ['GET'])
- @jwt_required()
- def projected():
- current_user = get_jwt_identity()
- return jsonify(logged_in_as=current_user),200
-
- if __name__ == '__main__':
- app.run()
注意:安装flsak库或者第三方库的时候一定要注意安装环境
第一步:安装Flask,创建跟路由函数hello_word()
- Pip install Flask
-
- pip install flask_jwt_extended
启动服务器
使用postman测试接口
第二步:查看账号信息
使用了GET方法。根据提供的昵称从账户列表中查找账户信息。
nick = request.args.get("nick"):从请求的查询参数中获取昵称。
result = [d for d in accounts if d.get("nick") == nick]:通过列表推导式,在账户列表中查找与提供的昵称匹配的账户。
如果找到匹配的账户,则返回该账户的信息
如果未找到匹配的账户,则返回一个包含消息"无法查询"的响应。
第三步:注册功能
使用了POST方法。实现系统的注册功能,其中包含电话、邮箱、昵称、密码和确认密码等信息的JSON数据,并将新账户添加到账户列表中。
get_data = request.json:从请求中获取JSON数据。
在JSON中定义一些变量,在从JSON数据中提取电话、邮箱、昵称、密码和确认密码等信息。
创建一个包含新账户account_add。
用append将新账户添加到accounts列表中。
最后,返回accounts
第四步:登录功能---包括token
实现系统的登录功能,通过发送包含用户名(nick)和密码(password)的 JSON 数据进行登录请求。首先从 accounts 列表中查找与输入的用户名匹配的账户信息,然后验证密码是否正确。如果密码正确,则生成access_token,并将其返回给客户端;否则返回一个 403 错误,表示密码错误。
使用postman测试登录功能
第五步:受保护的登录
实现系统对登录保护的功能,确保只有经过身份验证并且提供有效的access_token用户才能访问,以保护敏感资源不被未经授权的用户访问。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。