我在我们的应用程序中具有Excel导出功能。 为此,我有一个方案:
使用Postman,我可以使用“发送并下载”选项将导出的Excel保存为.xlsx格式,稍后我将在该选项上手动验证内容(列标题和行值)。
是否有任何方法可以通过API自动化来端到端地自动化此方案?
当前,我正在执行get操作(空手道框架),它正在响应这些标头:
内容类型→application / vnd.openxmlformats-officedocument.spreadsheetml.sheet
接受范围→字节
正文:流式传输人类不可读的对象。
状态:200 ok
如果无法实施e2e自动化,那么在这种情况下,自动化的接受标准应该是什么?
答案 0 :(得分:1)
2个选项。
如果您确定文件的二进制内容不会改变,请执行二进制比较,请参见以下示例:upload-image.feature
:And match response == read('karate-logo.jpg')
您必须编写一些自定义代码。有用于读取Excel的Java库。使用其中之一,读取数据,然后与预期结果进行比较。请参阅Java interop上的文档并编写一个辅助函数来完成此操作。
答案 1 :(得分:1)
找到一种使用Java和Karate实现解决方案的方法。步骤如下:
将您的响应字节发送到Java类Utility。这是我在空手道功能文件中所做的事情:
和def helper = Java.type('com.java.Utility') 和def excel = helper.ByteArrayToExcel(responseBytes)
在Utility类中,您将具有一个ByteArrayToExcel方法,其中将包含以下代码:
导入org.apache.commons.io.FileUtils;
FileUtils.writeByteArrayToFile(新 文件(“ src \ test \ java \ testdata \ Actual_Response.xlsx”),ResponseBytes);
现在,您将在指定位置拥有Excel。
编写一种方法来比较两个excel文件(实际的和您对特定请求的预期文件)。谷歌它,你会找到代码。指定,其返回类型为boolean。
在空手道中,像这样使用布尔值:
并匹配excelCompareResult == true
希望这会有所帮助。