gpt4 book ai didi

karate - 如果然后在 Karate DSL 中选择基本 URL 的其他实现

转载 作者:行者123 更新时间:2023-12-03 23:27:57 26 4
gpt4 key购买 nike

我对 Karate 有一些棘手的要求。我的 karate.config 中有一组 baseURL,它们是根据实现选择的。这是它的片段:

 if (env == 'qa') {
config.apiKey = apiKey;
config.tsp_api = 'https://api.qa.tceu.net';
config.svt_dcm = 'https://svt.qa.tceu.net';
config.acn_dcm = 'https://acn.qa.tceu.net';
config.sos_dcm = 'https://sos.qa.tceu.net';
config.cust_dcm = 'https://cust.qa.tceu.net';

这里 tsp、svt、acn、sos、cust 是一些操作。

我有一个功能文件,它将操作作为参数传递:
# Vehicle Initiates the action
When def Perform_Report_Notification = call read('./../common/performActionNotification.feature') { action: '#(action)' }

在调用的 performActionNotification.feature 中,我需要根据传递的操作从 karate.config 文件中获取 url。例如,如果操作是 sos,那么 url 应该是 sos_dcm。如果操作是 svt,那么 url 应该是 svt_dcm

这是来自 performActionNotification.feature 的片段以及我目前正在为 sos 做的事情:
Given url sos_dcm
And path '/AU/v1.0/TSP/'+ action
And request RequestPayload
When method post
Then status 200

我想实现类似 if then else 之类的东西:
if (action == 'sos') 
then myurl == 'sos_dcm'
else if (action == 'acn')
then myurl == 'acn_dcm'
else if (action == 'svt')
then myurl == 'svt_dcm'

Given url myurl
And...
And...
...

我尝试了一种 hack,它有效,但它不是一种干净的方法。我没有从 karate.config 读取 URL,而是通过这种方式对其进行硬编码:
Given url 'https://'+act+'.qa.tceu.net'

我尝试的另一件事是
* def myurl = action +'_dcm' #so if action is acn then the variable myurl would be acn_dcm
Given url myurl
...
....

但这会将 url 硬编码为“acn_dcm”,而不是从 karate.config 中选择定义的 url。

有人可以建议实现这一点的最佳方法吗?

最佳答案

这是一个提示。 JSON 实际上是一种非常有用的数据结构(想想哈希映射或字典),您可以在不需要 if 的情况下查找值。陈述。

* def data =
"""
{
qa: {
sos: 'https://sos.qa.tceu.net',
acn: 'https://acn.qa.tceu.net'
}
}
"""
* def env = 'qa'
* def urls = data[env]
* def action = 'sos'
* def actionUrl = urls[action]
* match actionUrl == 'https://sos.qa.tceu.net'
这应该会让你上路:)
编辑 - 另见: https://stackoverflow.com/a/67868935/143475

关于karate - 如果然后在 Karate DSL 中选择基本 URL 的其他实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59162274/

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