gpt4 book ai didi

testing - 在构建负载时动态设置 XML 标记值

转载 作者:行者123 更新时间:2023-11-28 20:22:07 26 4
gpt4 key购买 nike

我正在尝试使用 Karate 进行自动化测试。

我有一个 XML 负载。

我有一个静态 XML 负载,我正在从一个文件中准备好它,我想循环调用我的服务。

对于每次调用,我都想动态替换标签名称的值。

我将如何实现这一目标?

例如

下面是我的主要功能,它在循环中调用我的常用功能

Feature: Loop Call
Background:
* def common = call read('classpath:CommonFeatures.feature')

Scenario:
* table table
| payload_file | field_tag | field_value |
| 'HappyPath.xml' | 'car_fuel' | 'Gas' |
| 'HappyPath.xml' | 'car_color'| 'Red' |

* def response = call read('classpath:Car.feature') table

汽车.特征

Feature: Common
Scenario:
* print payload_file
* print field_tag
* print field_value
* xml payload = read('classpath:/payload/'+payload_file)
* print payload
* set payload/$field_tag = field_value

这是我在设置 field_tag 值时遇到的问题。

我还有其他选择来执行此操作,例如编写一个小的 java 脚本方法来替换标记值或一个使用 DOMParser 或 SAXParser 执行相同操作的小 java 类。

但是我想知道在构建方式中是否有任何 Karate 可以执行相同的操作。

如果我正在使用 var parser = new DOMParser();,同时使用 java 脚本方法替换标签值;并且 DOMParser 似乎无法使用。有没有办法让它可用?

最佳答案

感谢 Peter 提供的所有帮助和示例。

我觉得这是实现这一目标的最佳方式。

写了一个小的javascript函数

   """
* def replaceTag =
"""
function(x){
karate.setXml('temp', x.payload);
karate.pretty(karate.get('temp'));
if (x.field_tag) karate.set('temp', x.field_tag, x.field_value);
return karate.get('temp');
}
"""

然后像下面这样从 Car.feature 调用相同的方法,我得到了动态替换的有效负载。

Feature: Common
Scenario:
* print payload_file
* print field_tag
* print field_value
* xml payload = read('classpath:/payload/'+payload_file)
* print payload
* def args = { payload: #(payload), field_tag: #(field_tag), field_value: #
(field_value)}
* print args
* xml payload = call common.replaceTag args

注意:我必须升级 Karate 0.7.0 版本才能使用 karate.setXml 方法。

关于testing - 在构建负载时动态设置 XML 标记值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49016756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com