如何使空手道场景更具可读性和更短

How to make more readable and shorter a karate scenario

我是空手道框架的新手。我想写一个这样的场景:

version 1 :
Background:
        * url 'someURL' 
        * def user1 = {id:'123', name:'Bill'}

Given I have a user with id '123'
When I create a new user with the same id
Then I should get a response 'user with this id already exists'

但是在空手道中我必须这样写:

version 2 : 
Background:
    * url 'someURL' 
    * def user1 = {id:'123', name:'Bill'}

Given request user1
When method post
Then status 201
Given path response.id
When method get
Then response == {id:'123', name:'Bill'}

    * def idUser1 = response.id

Given request == {id: idUser1, name: 'Gary'}
When method post
Then response == {code: 400, message: 'user with this id already exists'}

如何获得第一个带有 Karate 框架的版本?我必须在哪里详细说明这 3 行?前任: Given I have a user with id '123' 和后面(我不知道在哪里以及如何)用

详细说明
"Given request user1
When method post
Then status 201
Given path response.id
When method get"
Then response == {id:'123', name:'Bill'} etc.

我是空手道的作者。如果您想要第一个版本,那么空手道不适合您。第一个版本没有用,除非你 really really 希望你的产品负责人或业务分析师或非技术人员能够阅读 (甚至创建)你的测试。根据我的经验,这种 从来没有 在实践中发生。

即使您决定走路径 1,您也需要像 Cucumber "Step Definitions" 一样编写大量 Java 代码。这是浪费时间,您将失去空手道详细断言的好处,示例如下:

关于这个话题我还有很多话要说,但是我的想法在这个博客中有详细的解释 post - Yes, Karate is not true BDD.

无论您选择哪个选项,一切顺利:)