【问题标题】:Tests retrieved from collection variable - test failures stop subsequent tests from running从集合变量中检索到的测试 - 测试失败会阻止后续测试运行
【发布时间】:2021-09-13 17:21:42
【问题描述】:

我有要在多个 API 调用中使用的测试。

使用来自外部文件的 JavaScript 是 open issue for 6 years now,但尚未得到官方支持。我是storing tests in collection variables,因此可以在每个 API 测试中检索它们。

问题是测试失败会像一般的 JS 失败一样停止执行。

测试通过 API 的 Pre-req 存储在集合变量中

在设置 API 调用中,我通过预请求脚本存储共享的测试库。这工作正常。

“正常”测试失败

在 API 的测试区域中编写测试代码时,失败不会停止后续测试的运行。

从集合变量中提取的测试失败

我可以从集合变量中提取测试并正常运行它们。但是,当 Chai 期望失败时,它似乎被视为 JavaScript 失败而不是测试/期望失败。

测试运行失败,此 API 的后续测试不会运行,集合中的其他 API 也不会运行。

如何像硬编码测试一样从集合变量运行/失败中检索测试?

【问题讨论】:

    标签: testing postman


    【解决方案1】:

    问题在于我是如何调用库函数的。如果在传递给 pm.test() 的匿名函数中调用库函数(具有期望),则它可以按预期工作,而不是传递的函数。

    【讨论】:

      【解决方案2】:

      我想问题是你如何从utils调用函数

      只是utils.payloadIs204,而不是utils.payloadIs204()

      它对我有用


      更新通过传递参数重用。

      标签预请求

      pm.environment.set("abc", function print(text1, text2){
          console.log(text1)
          console.log(text2)
      } + "");
      

      标签测试

      let script = pm.environment.get("abc");
      eval((script + "print('name', 'age')"))
      

      【讨论】:

      • 你对如何传递变量有什么建议吗?删除空括号会为测试失败提供所需的行为。现在我需要将一些参数传递给作为集合变量存储的函数,例如utils.payloadIs204("foo", "bar", "baz")。一旦我添加了括号和参数,我就会回到最初报告的问题。
      • @Jim 嗨,我更新了答案,如果它很好,请不要犹豫投票。谢谢
      猜你喜欢
      • 2019-10-06
      • 1970-01-01
      • 2022-07-09
      • 2021-03-19
      • 2021-10-25
      • 2011-02-28
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      相关资源
      最近更新 更多