我正在尝试从文件中读取 json 负载并使用场景大纲和示例设置 CSV 文件中的值

I am trying to read a json payload from a file and setting the values from CSV file using scenario outline and examples

我有一个示例 json 文件如下

{
book : {bookId : '<bookId>' , 
         bookName : '<bookName>'
         },
staff : {
     sfattid : '<sfattid>',
     name : '<name>'
     },
libraryMember : { 
libMembId : '<libMembId>',
name : '<libraryMember>'

         }
}

我有一个包含以下信息的 csv 文件

我想为 csv 文件中的每个变量设置值,并在 运行 时间内设置 REST 请求 3 次。

特点:场景大纲使用动态table 来自 csv 文件

Scenario Outline: staffname name: <name>
  # When json payload =     {book : {bookId : '<bookId>' , bookName : '<bookName>',},staff : {sfattid : '<sfattid>', name : '<name>'},libraryMember : { libMembId : '<libMembId>' ,name : '<libraryMember>'}}
    When json payload = read("request.json")
    Given url 'http://localhost:8089/'
    And path 'returnBook'
    And request payload
    When method post
    Then status 200
    Then match karate.jsonPath(response,"$.status") ==  '<status>'



Examples:
| read('bookreturn.csv') |

我在下面编写了完美运行的代码,但在下面的情况下,相同的 json 有效负载存在于我想保留在文本文件中的功能文件中。请推荐一些代码。

特点:场景大纲使用动态table 来自 csv 文件

Scenario Outline: staffname name: <name>
  # When json payload =     {book : {bookId : '<bookId>' , bookName : '<bookName>',},staff : {sfattid : '<sfattid>', name : '<name>'},libraryMember : { libMembId : '<libMembId>' ,name : '<libraryMember>'}}
    When json payload = read("request.json")
    Given url 'http://localhost:8089/'
    And path 'returnBook'
    And request payload
    When method post
    Then status 200
    Then match karate.jsonPath(response,"$.status") ==  '<status>' 

    Examples:
    | read('bookreturn.csv') |

抱歉,您无法进一步优化它,因为要使 <name> 正常工作,必须 特征文件本身。我个人认为您不必要地尝试过度设计您的测试。你已经拥有的东西没有任何问题。

如果你真的坚持 - 这是替代方案,请参考:https://github.com/intuit/karate#data-driven-features

* def books = read('bookreturn.csv')
* def result = call read('called.feature') books

但是您将需要使用 2 个特征文件。循环中的每本书都可以在 embedded expressions 中使用。因此,您可以从 JSON 文件中读取,文件中的任何嵌入表达式都将起作用。

认真地坚持你所拥有的!