【问题标题】:How can I reuse a parameterized Postman test across endpoints?如何跨端点重用参数化 Postman 测试?
【发布时间】:2022-02-18 22:57:26
【问题描述】:

在 Postman 中,我可以创建一组通用测试,这些测试在集合/文件夹 Tests 选项卡中的每个端点之后运行,如下所示:

pm.test("status code is 200", function () {
    pm.response.to.have.status(200);
});

但是我应该如何对响应对象进行架构验证呢?每个端点都有不同的预期架构。所以我在每个单独的端点上都有这样的东西:

const schema = { type: 'array', items: ... }

pm.test('response has correct schema', function () {
    const {data} = pm.response.json();
    pm.expect(tv4.validate(data, schema)).to.be.true;
});

我无法将其提取到集合级别,因为每个架构都不同。

现在我发现我想稍微调整一下该测试,但我必须将其复制并粘贴到 50 个端点中。

这里推荐的跨端点共享测试的模式是什么?

【问题讨论】:

    标签: postman postman-pre-request-script postman-testcase


    【解决方案1】:

    几年前我也遇到过同样的问题,我找到了两种解决方法:

    1. 为每个结构对象创建一个文件夹

    您可以将所有共享相同结构的测试用例分组到一个新文件夹中,并为该组创建一个测试用例。这样做的问题是您将在其他文件夹中重复请求。 (对于此解决方案,您需要将“测试用例”放入文件夹级别)

    1. 使用正则表达式创建验证(推荐)

    在每个请求的名称中指定一组规则(这些规则将指示它们可能具有什么样的结构或调用)。然后,您在第一个父文件夹中为每种类型的变体创建一个验证(使用正则表达式)。 (您需要在父文件夹中创建文档和一些 if 语句)

    例如:[POST] CRLTHM 创建一组家庭

    每个首字母的含义:

    • CR:响应必须为 201
    • LT:响应必须是项目列表
    • HM:响应的类型必须是 home 对象

    并且正则表达式条件必须是这样的(这是一个示例,请尽量使您的正则表达式准确):

    if(/CRLTHM\s/.test(pm.info.requestName))

    (在此图像中,NA 仅指未经过身份验证)

    【讨论】:

    • 这太棒了——我喜欢正则表达式的想法,至少在 Postman 实现标签或请求级变量或其他可以用于此目的的东西之前。由于我在几乎每个端点上都有一个独特的模式,我认为这不会让我一路走好,但我仍然可以将此模式用于其他条件测试,就像您在示例中所做的那样。
    猜你喜欢
    • 1970-01-01
    • 2019-03-07
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多