api - 空手道 API 构建来自 csv 文件的动态请求 XML,如果 resp 标记值在 csv 中为空,我不希望在请求中创建标记
问题描述
我正在尝试从 csv 文件构建 xml,如果相应的标签值在 csv 中为空白,我想从请求中删除 xml 标签。我有 2 个功能文件,1 个 xml 和 1 个 csv 文件。下面是我的代码。
'''
request.xml:
<ROUTE>
<Name>
<FirstName></FirstName>
<LastName></LastName>
</Name>
</ROUTE>
getQuoteTest.feature:
@tag
Feature: Get Quote Test
Scenario Outline:
* call read('classpath:getQuote.feature') {'FirstName':"<FirstName>",'LastName':"<LastName>"}
Examples:
| read('classpath:TestData.csv') |
CSV file:
FirstName LastName
Matt Chat
(blank) John
Shane Bond
Andrew (blank)
getQuote.feature
@ignore
Feature: Get Quote
Background:
Scenario:
* xml req = read('classpath:request.xml')
* set req/ROUTE/Name/FirstName = FirstName
* set req/ROUTE/Name/LastName = LastName
Given request req
When method POST
Then status 200
And print response
'''
When FirstName is blank, I don't want <FirstName></FirstName> tags to be present in my request xml. It would be great if I can get the exact code.
Thanks in advance !
解决方案
一个自包含的代码,您可以运行它然后根据您的需要进行自定义:
Feature: Conditional Example
Background:
Scenario Outline:
* def req =
"""
<ROUTE>
<Name>
<FirstName><FN></FirstName>
<LastName><LN></LastName>
</Name>
</ROUTE>
"""
* xml req2 = req
* if (req2.ROUTE.Name.LastName == null) karate.remove("req2","//LastName")
* if (req2.ROUTE.Name.FirstName == null) karate.remove("req2","//FirstName")
* print req2
Examples:
| FN | LN |
| Matt | Chat |
| | John |
| Shane | Bond |
| Andrew | |
推荐阅读
- visual-studio-2017 - 在 IIS 上发布新项目
- python - 写入属性时如何调用方法
- sql-server - 将 sqljdbc_auth.dll 放置在路径上的建议位置
- flutter - 在 null 上调用了方法“call”。接收方:空
- python - 多处理一次运行 1 个线程 x 次
- python - 使用 eval 函数多次打印字符串
- orientdb - 如何设置 LINKMAP 属性
- matlab - 如何在matlab中创建相对频率直方图?
- javascript - reactjs不能将道具传递给纬度和经度(谷歌地图)
- c# - C# HttpWebRequest - 为什么不是所有收到的 cookie 都在后续请求中发回?