我们可以使用空手道从一个特征调用另一个场景吗?
Can we call a scenario from one feature in another using karate?
我们有一个包含多个场景的功能 A。我们需要该文件中的一个场景。我们可以在功能 B 中调用它吗?
没有。您需要将该场景提取到一个单独的 *.feature
文件中,然后使用 call
关键字重新使用它。
编辑:空手道 0.9.0 及更高版本将支持按标签调用,如下所示:
* def result = call read('some.feature@tagname')
举例说明:
给定一个包含多个场景的特征文件 some.feature
由 tag-decorator 标记:
@tagname
Scenario: A, base case that shares results to e.g. B
// given, when, then ... and share result in a map with keyword `uri`
* def uri = responseHeaders['Location'][0]
@anotherTag
Scenario: X, base case that shares results to e.g. B
// given, when, then ... and share result in a map with keyword `createdResourceId`
* def createdResourceId = $.id
在另一个功能中,我们可以通过标签从该功能中调用特定的场景,例如tagname
:
Scenario: B, another case reusing some results of A
* def result = call read('some.feature@tagname')
* print "given result of A is: $result"
Given path result.uri + '/update'
我们有一个包含多个场景的功能 A。我们需要该文件中的一个场景。我们可以在功能 B 中调用它吗?
没有。您需要将该场景提取到一个单独的 *.feature
文件中,然后使用 call
关键字重新使用它。
编辑:空手道 0.9.0 及更高版本将支持按标签调用,如下所示:
* def result = call read('some.feature@tagname')
举例说明
给定一个包含多个场景的特征文件 some.feature
由 tag-decorator 标记:
@tagname
Scenario: A, base case that shares results to e.g. B
// given, when, then ... and share result in a map with keyword `uri`
* def uri = responseHeaders['Location'][0]
@anotherTag
Scenario: X, base case that shares results to e.g. B
// given, when, then ... and share result in a map with keyword `createdResourceId`
* def createdResourceId = $.id
在另一个功能中,我们可以通过标签从该功能中调用特定的场景,例如tagname
:
Scenario: B, another case reusing some results of A
* def result = call read('some.feature@tagname')
* print "given result of A is: $result"
Given path result.uri + '/update'