API自动化测试:是否可以通过内容验证来自动化下载方案?

时间:2018-12-10 12:48:35

标签: automation rest-assured karate web-api-testing

我在我们的应用程序中具有Excel导出功能。 为此,我有一个方案:

  1. 执行导出至excel
  2. 验证API响应状态并导出excel内容。

使用Postman,我可以使用“发送并下载”选项将导出的Excel保存为.xlsx格式,稍后我将在该选项上手动验证内容(列标题和行值)。

是否有任何方法可以通过API自动化来端到端地自动化此方案?

当前,我正在执行get操作(空手道框架),它正在响应这些标头:

  1. 内容类型→application / vnd.openxmlformats-officedocument.spreadsheetml.sheet

  2. 接受范围→字节

正文:流式传输人类不可读的对象。

状态:200 ok

如果无法实施e2e自动化,那么在这种情况下,自动化的接受标准应该是什么?

2 个答案:

答案 0 :(得分:1)

2个选项。

  1. 如果您确定文件的二进制内容不会改变,请执行二进制比较,请参见以下示例:upload-image.featureAnd match response == read('karate-logo.jpg')

  2. 您必须编写一些自定义代码。有用于读取Excel的Java库。使用其中之一,读取数据,然后与预期结果进行比较。请参阅Java interop上的文档并编写一个辅助函数来完成此操作。

答案 1 :(得分:1)

找到一种使用Java和Karate实现解决方案的方法。步骤如下:

  1. 将您的响应字节发送到Java类Utility。这是我在空手道功能文件中所做的事情:

    和def helper = Java.type('com.java.Utility') 和def excel = helper.ByteArrayToExcel(responseBytes)

  2. 在Utility类中,您将具有一个ByteArrayToExcel方法,其中将包含以下代码:

    导入org.apache.commons.io.FileUtils;

    FileUtils.writeByteArrayToFile(新 文件(“ src \ test \ java \ testdata \ Actual_Response.xlsx”),ResponseBytes);

  3. 现在,您将在指定位置拥有Excel。

  4. 编写一种方法来比较两个excel文件(实际的和您对特定请求的预期文件)。谷歌它,你会找到代码。指定,其返回类型为boolean。

  5. 在空手道中,像这样使用布尔值:

并匹配excelCompareResult == true

希望这会有所帮助。