【问题标题】:Postman test throws error: TypeError: Cannot read property 'ProjectNumber' of undefined邮递员测试抛出错误:TypeError:无法读取未定义的属性“ProjectNumber”
【发布时间】:2020-04-22 12:27:40
【问题描述】:

我编写了一个 Postman 测试脚本,它在响应中返回一个 xml。但是测试脚本没有运行。

测试脚本:

var jsonObject = xml2Json(responseBody);
console.log(jsonObject);
tests["TestCase"] = jsonObject.CreatePOReq.CreatePOReq.ProjectNumber === "3466703";

响应 xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CreatePOReq ReturnStatus="Send to Vendor" GoetPONumber="806236" ProjectNumber="3466703">
    <line/>
    <header/>
</CreatePOReq>

错误: 评估测试脚本时出错:TypeError: Cannot read property 'ProjectNumber' of undefined

控制台日志:

【问题讨论】:

    标签: javascript java soap postman


    【解决方案1】:

    可以在 TestScript 的第三行重复 CreatePOReq 吗?

    tests["TestCase"] = jsonObject.CreatePOReq.CreatePOReq.ProjectNumber === "3466703";
    

    【讨论】:

      【解决方案2】:

      请使用下面的代码,它肯定会工作。

      使用“$”符号代替第二个“CreatePOReq”值

       var jsonObject = xml2Json(responseBody);
       console.log(jsonObject);
       console.log(jsonObject.CreatePOReq.$.ProjectNumber);
       tests["TestCase"] = jsonObject.CreatePOReq.$.ProjectNumber === 
            "3466703";
      

      【讨论】:

      • 我有另一个查询,我想将它设置为一个全局变量,但是当我这样做时,我没有得到另一个端点请求正文中的实际值 ->pm.globals.set (("ofs_projectNumber", "jsonObject.CreatePOReq.$.ProjectNumber"));然后我尝试在另一个 Post 端点 ProjectNumber="{{ofs_projectNumber}}" 的请求正文中使用它。但这没有得到我之前设置的值
      • 嗨,我们想给它设置一个值作为一个全局变量,首先,我们需要 id key(i,e. like: ofs_projectNumber as key) 请按照以下步骤操作:-点击帖子中的眼睛图标。添加一个具有空值的变量。 - 在正文的测试中添加以下代码。 pm.globals.set("ofs_projectNumber", "jsonObject.CreatePOReq.$.ProjectNumber"); console.log(pm.globals.get("ofs_projectNumber"));
      • 请查看 stackoverflow.com/questions/59593245。希望对你有用
      • 是的。我提出了它..它帮助..Thnx 指出这一点很多:)
      猜你喜欢
      • 2018-09-19
      • 1970-01-01
      • 2020-01-29
      • 2019-08-08
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多