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

时间:2017-09-18 22:42:08

标签: karate

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

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行?例如: <{1}}后面(我不知道在哪里和如何)用

详细说明
Given I have a user with id '123'

1 个答案:

答案 0 :(得分:2)

我是空手道的作者。如果你想要第一个版本,空手道不适合你。除非确实 确实希望您的产品所有者或业务分析师或非技术人员能够阅读(甚至创建)您的测试,否则第一个版本无效。根据我的经验,这永远不会在实践中发生。

即使您决定沿着路径1前进,您也需要编写许多Java代码作为Cucumber“Step Definitions”。这是浪费时间,你将失去空手道详细断言的好处,其中的例子如下:

enter image description here

我在这个主题上还有更多的话要说,但我的想法在这篇博客文章Yes, Karate is not true BDD中有详细解释。

您选择的任何选项都是最好的:)