postman的javaScript的脚本编写

在Postman中编写JavaScript脚本是一种增强API请求功能的有效方式,可以用来处理请求前的准备、请求后的验证、动态数据处理等。以下是几个常见的使用场景及示例代码:

1. 预请求脚本 (Pre-request Script)

预请求脚本在发送请求之前执行,常用于设置环境变量、全局变量或动态生成请求参数。

示例:设置环境变量

1// 设置一个名为"token"的环境变量
2pm.environment.set("token", "your-dynamic-token-value");

2. 测试脚本 (Tests)

测试脚本在请求发送并收到响应后执行,用于验证响应数据、状态码等。

示例:检查响应状态码

1// 检查响应状态码是否为200
2pm.test("Status code is 200", function () {
3    pm.response.to.have.status(200);
4});

示例:解析JSON响应并验证字段

1var jsonData = pm.response.json();
2
3// 验证响应中的某个字段值
4pm.test("Check 'success' field in JSON response", function () {
5    pm.expect(jsonData.success).to.eql(true);
6});

3. 动态生成请求参数

可以在请求体或URL中使用JavaScript表达式动态生成内容。

示例:在请求体中插入变量 假设已有一个环境变量userId,在POST请求的Body中使用它:

Json

1{
2    "userId": "{{userId}}"
3}

在预请求脚本中动态设置userId

Javascript

1pm.environment.set("userId", "12345");

4. 控制请求流程

虽然直接在Postman中控制请求流程不如在编程语言中灵活,但可以通过条件判断改变请求的执行逻辑。

示例:根据条件决定是否发送请

Javascript

1if (pm.environment.get("skipRequest") === "true") {
2    postman.setNextRequest(null); // 跳过下一个请求
3} else {
4    postman.setNextRequest("Another Request Name"); // 执行特定的下一个请求
5}

注意事项

  • pm.* 和 postman.* 是Postman提供的API集合,用于访问请求、响应、环境变量等。
  • 使用eval()函数可以执行更复杂的JavaScript逻辑,但需谨慎,因为它可能导致安全风险。
  • 了解Postman沙箱的限制,比如它不支持Node.js的全部特性或模块。

Postman提供的API集合

Postman的JavaScript脚本API非常丰富,主要分为几大类别,包括但不限于请求和响应处理、环境与变量管理、集合与迭代控制、测试断言等。以下是一些常用的API调用示例和分类说明:

请求相关

  • 获取请求信息

    Javascript
    1// 获取请求方法
    2const method = pm.request.method;
    3
    4// 获取请求URL
    5const url = pm.request.url.toString();
    6
    7// 获取请求头
    8const headers = pm.request.headers.toObject();
  • 修改请求

    Javascript
    1// 添加请求头
    2pm.request.headers.add({key: 'Custom-Header', value: 'Value'});
    3
    4// 修改请求体
    5pm.request.body.update({raw: JSON.stringify({key: 'newValue'})});

响应处理

  • 获取响应信息

    Javascript
    1// 获取响应状态码
    2const statusCode = pm.response.code;
    3
    4// 获取响应体(文本)
    5const responseBody = pm.response.text();
    6
    7// 解析JSON响应
    8let jsonData = pm.response.json();
  • 断言

    Javascript
    1pm.test("Status code is 200", function () {
    2    pm.response.to.have.status(200);
    3});
    4
    5pm.test("Response body includes text", function () {
    6    pm.expect(pm.response.text()).to.include("expectedText");
    7});

环境与变量

  • 设置和获取变量
    Javascript
    1// 设置环境变量
    2pm.environment.set("variable_key", "value");
    3
    4// 获取环境变量
    5const variableValue = pm.environment.get("variable_key");
    6
    7// 设置全局变量
    8pm.globals.set("global_variable_key", "global_value");
    9
    10// 获取全局变量
    11const globalVariableValue = pm.globals.get("global_variable_key");

集合与迭代控制

  • 控制测试流程
    Javascript
    1// 跳过当前请求的下一个请求
    2postman.setNextRequest(null);
    3
    4// 设定下一个请求的名称
    5postman.setNextRequest("Next Request Name");

其他常用API

  • 日志输出

    Javascript
    1console.log("This is a log message.");
  • 延迟执行

    Javascript
    1setTimeout(function() {
    2    // 这里放置需要延时执行的代码
    3}, 5000); // 延迟5秒

如何调用

在Postman中,可以在“Pre-request Script”(预请求脚本)或“Tests”(测试脚本)部分编写JavaScript代码来调用这些API。Postman提供了丰富的API文档,您可以通过Postman应用程序内的“Help”菜单或者访问Postman Learning Center来获取更详细的API参考和示例

让我们逐一比较这些工具的特点,包括Wireshark、Postman、Apifox、Apipost、Locust、SoapUI,它们分别适用于不同的应用场景:

Wireshark

  • 优点
    • 强大的网络封包分析能力,能捕获并解析网络上的数据包,适合于底层网络故障排查和协议分析。
    • 支持多种网络接口和协议,几乎可以分析任何网络流量。
    • 开源免费,有庞大的社区支持,不断更新和改进。
    • 提供丰富的过滤器,帮助用户快速定位感兴趣的网络数据包。
  • 缺点
    • 学习曲线陡峭,尤其是对于非网络专业人士。
    • 界面较为复杂,初学者可能会感到困惑。
    • 主要针对底层网络数据,对于API测试和开发支持不足。

Postman

  • 优点
    • 易于上手,界面友好,适合各种水平的开发者测试RESTful API。
    • 支持API请求构建、测试、文档化和自动化,功能全面。
    • 支持团队协作,能够导入导出和分享集合。
  • 缺点
    • 对于复杂的API测试场景,可能需要编写较多的脚本。
    • 高级功能和团队协作功能需要付费订阅。

Apifox

  • 优点
    • 集API设计、文档、调试、Mock、测试于一体,简化了API的整个生命周期管理。
    • 支持实时协作,减少团队间沟通成本。
    • 无缝对接OpenAPI规范,自动同步API变更。
  • 缺点
    • 相较于一些开源工具,可能在成本上对小型团队不太友好。
    • 功能强大可能意味着学习和配置初期需要一定时间。

Apipost

  • 优点
    • 类似Postman,提供了API开发和测试的一站式解决方案。
    • 支持多种环境配置,便于管理不同场景下的API请求。
    • 提供代码自动生成,方便快速集成到项目中。
  • 缺点
    • 部分高级功能同样需要付费。
    • 社区和资源相较于Postman可能较小。

Locust

  • 优点
    • 强大的性能测试工具,使用Python编写,易于扩展和自定义测试场景。
    • 支持分布式测试,能模拟大量用户并发访问,适合大规模压力测试。
    • 可视化测试报告,便于分析性能瓶颈。
  • 缺点
    • 需要一定的编程基础,特别是Python语言。
    • 设置和配置相比图形界面工具更为复杂。

SoapUI

  • 优点
    • 专为Web服务测试设计,支持SOAP和RESTful API测试。
    • 功能丰富,包括自动化测试、安全性测试、数据驱动测试等。
    • 提供免费版和专业版,满足不同需求。
  • 缺点
    • 界面和功能较为复杂,对新手不够友好。
    • 主要针对Web服务,对于纯REST API的测试可能不如其他专门工具灵活。

总结而言,选择哪个工具取决于具体的需求,比如是否需要进行底层网络分析(Wireshark)、API开发和测试的便利性(Postman、Apifox、Apipost)、性能测试(Locust)、或是专注于Web服务测试(SoapUI)

  • 30
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隔壁老?

如果您不介意,打赏小编一些

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值