我正在尝试从文件中读取 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 文件中读取,文件中的任何嵌入表达式都将起作用。
认真地坚持你所拥有的!
我有一个示例 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 文件中读取,文件中的任何嵌入表达式都将起作用。
认真地坚持你所拥有的!