有没有办法在空手道中查询 csv 文件?
Is there a way to query a csv file in Karate?
我正在寻找类似 Fillo Excel API 的类似功能,我们可以在其中使用类似查询的语句在 excel 文件中执行 CRUD 操作。
csv 文件中的 select 语句是对框架的重要补充,可为测试数据驱动的方法测试提供更大的灵活性。
示例场景:一个测试用例,需要有多个数据准备插入记录到数据库。
与其像这样将所有测试数据放在 1 行或 1 个单元格中,不如在处理之前进行字符串拆分。
|TC-ID|FNAME |LNAME |
|TC-1 |FNAME1,FNAME2,FNAME3|LNAME1,LNAME2,LNAME3|
|TC-2 |FNAME4 |LNAME4 |
当我们有类似 * def data = read('Select * from persons.csv where TC-ID=TC-1')
的内容时,我们可以像下面这样设计我们的 csv 文件
|TC-ID|FNAME |LNAME |
|TC-1 |FNAME1|LNAME1|
|TC-1 |FNAME2|LNAME2|
|TC-1 |FNAME3|LNAME3|
|TC-2 |FNAME4|LNAME4|
没必要。空手道可以在一行中将 CSV 文件转换为 JSON 数组:
* def data = read('data.csv')
之后只需使用 JsonPath 或“过滤”操作来“查询”数据(搜索文档以获取更多示例):
* def found = data.find(x => x['TC-ID'] === 'TC-1')
* def results = data.filter(x => x.FNAME.startsWith('A'))
我正在寻找类似 Fillo Excel API 的类似功能,我们可以在其中使用类似查询的语句在 excel 文件中执行 CRUD 操作。
csv 文件中的 select 语句是对框架的重要补充,可为测试数据驱动的方法测试提供更大的灵活性。
示例场景:一个测试用例,需要有多个数据准备插入记录到数据库。
与其像这样将所有测试数据放在 1 行或 1 个单元格中,不如在处理之前进行字符串拆分。
|TC-ID|FNAME |LNAME |
|TC-1 |FNAME1,FNAME2,FNAME3|LNAME1,LNAME2,LNAME3|
|TC-2 |FNAME4 |LNAME4 |
当我们有类似 * def data = read('Select * from persons.csv where TC-ID=TC-1')
|TC-ID|FNAME |LNAME |
|TC-1 |FNAME1|LNAME1|
|TC-1 |FNAME2|LNAME2|
|TC-1 |FNAME3|LNAME3|
|TC-2 |FNAME4|LNAME4|
没必要。空手道可以在一行中将 CSV 文件转换为 JSON 数组:
* def data = read('data.csv')
之后只需使用 JsonPath 或“过滤”操作来“查询”数据(搜索文档以获取更多示例):
* def found = data.find(x => x['TC-ID'] === 'TC-1')
* def results = data.filter(x => x.FNAME.startsWith('A'))