API 自动化测试:有没有什么方法可以通过内容验证来自动化下载场景?

API Automation Testing : Is there any way to automate download scenario with content validation?

我的应用程序中有导出到 excel 功能。 我有一种情况:

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

使用 Postman,我可以使用 "Send and Download" 选项以 .xlsx 格式保存导出的 excel,稍后我将手动验证内容(列 Headers 和行值)。

有什么方法可以通过 API 自动化来端到端地自动化这个场景吗?

目前,我正在执行 get 操作(空手道框架),它正在响应这些 headers 作为响应:

  1. Content-Type→application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

  2. Accept-Ranges→字节数

Body:流 objects 人类不可读。

状态:200 正常

如果 e2e 自动化不是 possible/feasible,在这种情况下自动化的验收标准应该是什么?

2 个选项。

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

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

编辑 - 也看到这个答案:

找到一种方法,用 Java 和空手道来实现解决方案。以下是步骤:

  1. 将您的响应字节发送到 java class 实用程序。这就是我在空手道功能文件中所做的:

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

  2. 在 Utility class 中,您将拥有一个包含以下代码的 ByteArrayToExcel 方法:

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

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

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

  4. 编写一种方法来比较两个 excel 文件(针对特定请求的实际文件和您预期的文件)。 Google吧,你会找到代码的。指定,其 return 类型为布尔值。

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

并匹配excelCompareResult == true

希望对您有所帮助。