【发布时间】:2018-03-20 10:36:55
【问题描述】:
我需要对 JSON 响应的结果执行两个操作。那么我们可以在单个 JS 文件中进行这些不同的操作吗?还是我们需要像一个 JS 文件一样进行映射以进行一项操作。 请帮忙解决这个问题
【问题讨论】:
标签: karate
我需要对 JSON 响应的结果执行两个操作。那么我们可以在单个 JS 文件中进行这些不同的操作吗?还是我们需要像一个 JS 文件一样进行映射以进行一项操作。 请帮忙解决这个问题
【问题讨论】:
标签: karate
我不建议尝试在空手道中创建复杂的 JavaScript,这只会导致可维护性问题。如果你真的想要一个有多个实用方法的对象,写一个带有静态方法的Java类,它会更容易维护/调试。
也就是说,如果你真的坚持 - 看看这个答案:https://stackoverflow.com/a/47002604/143475
但这是我对大多数项目的推荐。在一个“通用”功能文件中,定义多个方法,如下所示:
Scenario:
* def now = function(){ return java.lang.System.currentTimeMillis() }
* def uuid = function(){ return java.util.UUID.randomUUID() + '' }
您现在可以这样调用此功能:
* call read('common.feature')
现在该特性中的所有功能都可以使用了:
* def time = now()
* def id = uuid()
【讨论】:
*.feature 文件和js。在您的common.feature 示例中,整个文件是这样概述的吗? Background:* def now = function(){ return java.lang.System.currentTimeMillis() }* def uuid = function(){ return java.util.UUID.randomUUID() + '' }
@kmancusi 这就是我使用常用功能创建common.feature 文件的方法,然后下面的my.test.feature 显示了我如何导入它以在另一个功能中使用它。
common.feature
@ignore
Feature:
Scenario:
* def now =
"""
function() {
return java.lang.System.currentTimeMillis()
}
"""
* def uuid =
"""
function() {
return java.util.UUID.randomUUID() + ''
}
"""
my.test.feature
Feature: my tests
Background:
* configure logPrettyRequest = true
* configure logPrettyResponse = true
* configure ssl = true
Scenario: basic test
* def util = call read('common.feature')
* def sessionId = util.uuid()
* print sessionId
【讨论】: