我有一个示例json文件,如下所示
{
book : {bookId : '<bookId>' ,
bookName : '<bookName>'
},
staff : {
sfattid : '<sfattid>',
name : '<name>'
},
libraryMember : {
libMembId : '<libMembId>',
name : '<libraryMember>'
}
}
我有一个包含以下信息的CSV文件
我想为csv文件中的每个变量设置值,并在运行时设置REST请求3次。
功能:使用动态表的方案大纲 从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有效负载,我想保留在文本文件中。请提出一些代码。
功能:使用动态表的方案大纲 从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') |
答案 0 :(得分:1)
对不起,您无法对其进行进一步优化,因为要使<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文件中读取文件,并且文件中的所有嵌入式表达式都可以使用。
认真地坚持你拥有的东西!