如果 属性 为空,则在 REST header 中忽略 属性 传输 - SOAPUI Groovy

Ignore property transfer in REST header if property is null - SOAPUI Groovy

我使用数据库作为数据源将属性和值传输到我在 Soap 中的测试脚本UI。

在这种情况下,我有 3 个占位符,我将它们用作 header 类型和我的休息测试的值。我面临的问题是如何让 soapUI 忽略 header type/value 的 属性 传输(如果它在数据库中为 NULL)?

我发现 Soap UI 会自动尝试发送 NULL header 属性 和 $header_type_2 & $header_type_value_2 的值,即使它们被读入为 NULL。

在原始 header 请求中它看起来像这样:

GET https://api.testapi.test.domain.au:443/v1/ttds/events HTTP/1.1
Connection: close
Accept-Encoding: gzip,deflate
User-Agent: AppName/1.0
: 
Authorization: apikey 1233434f7909641458992a7dfebcd3bd311
Host: api.testapi.test.domain.au:443

注意到第 4 行的“:”了吗?这导致服务 return 400 错误请求。

下面的屏幕截图显示了我如何在 Soap 中设置 GET REST 测试步骤 UI(开源版)

这实际上是个好问题。请注意,仅当 Header 属性 名称为 null 而不是其值时,您才会收到 400 错误。

"ignore"header属性不容易;相反,您可以为其分配一个默认字符串,这样它就不会抛出错误。

要用更具体的东西替换 Null 或 Empty,您需要使用带有嵌套变量的内联脚本。因此,对于您的项目截图,它应该是这样的:

Header: ${=if ("${header_type_1}"=="" || "${header_type_1 }"==null) return "NULL_HEADER_1" else return "${header_type_1}"}

价值:${header_type_value_1}

Header: ${=if ("${header_type_2}"=="" || "${header_type_2 }"==null) return "NULL_HEADER_2" else return "${header_type_2}"}

价值:${header_type_value_2}

Header: ${=if ("${header_type}"=="" || "${header_type }"==null) return "NULL_HEADER" else return "${header_type}"}

价值:${header_type_价值}

我测试了它并且工作正常。喜欢的话请给我加分 :)