【问题标题】:Get line of error/assertionError in postman在邮递员中获取错误/断言错误行
【发布时间】:2023-01-17 12:09:27
【问题描述】:

所以我在邮递员中收到断言错误,错误如下所示:

There was an error in evaluating the test script:  AssertionError: expected undefined to be a string

但是我有这个 API 的 300 个断言,并且几乎不可能确定哪个断言实际上失败了,有没有办法让邮递员显示引发 assertionFail 的行号?

【问题讨论】:

  • 目前还没有办法解决这个问题(开放请求:github.com/postmanlabs/postman-app-support/issues/3803)。如果你在一个 pm.test() 中有 300 个断言,我会说你需要开始将它们划分为更小的测试。我能提供的唯一解决方案是二进制搜索,有 300 个断言,您将通过 9 个步骤到达那里。只需评论/删除一半的断言,检查哪一半有错误,然后继续减半,直到你只有一个测试。努力工作是的,但可以肯定的是,您最多可以在 9 个步骤中找到测试。

标签: javascript postman postman-testcase


【解决方案1】:

如果深入研究,有一种方法可以获取行号: How do you find out the caller function in JavaScript?

将您的断言包装在一个非常大的 try catch 中。然后打印出catch中的栈。

细节

在底部附加捕获。是这样的:

 try {
    // 300 asserts here


}catch (e) {
    console.log(e);
    console.log(`e.stack = ${e.stack}`);   
}

当 PM 命中断言时,您将看到类似以下内容:

{type: "Error", name: "TypeError", message: "Cannot read property 'json' of undefined"}


e.stack = TypeError: Cannot read property 'json' of undefined
    at Object.eval (eval at exec (evalmachine.<anonymous>:58:1931768), <anonymous>:89:30)
    at u.exec (evalmachine.<anonymous>:58:1931803)
    at t.exports (evalmachine.<anonymous>:58:5743)
    at Object.<anonymous> (evalmachine.<anonymous>:58:7440)
    at evalmachine.<anonymous>:15:26
    at Array.forEach (<anonymous>)
    at Object.emit (evalmachine.<anonymous>:14:54)
    at evalmachine.<anonymous>:51:24
    at evalmachine.<anonymous>:5:21
    at evalmachine.<anonymous>:6:18
 

堆栈的顶部告诉您行号(从零开始):

在 Object.eval (eval at exec (evalmachine.:58:1931768), :89:30)

所以在这种情况下,89 在 IDE 中被报告为 88。 顺便说一句,看起来 30 实际上是被调用方法的列号。

额外的条目提供更长的跟踪,显示错误发生之前调用的沿袭,这在某些调试情况下可能很有用。

警告这将导致第一个断言错误中断任何进一步的测试。所以当你完成时撤消这个改变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 2022-12-29
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多