【问题标题】:API Automation Testing : Is there any way to automate download scenario with content validation?API 自动化测试:有没有办法通过内容验证来自动化下载场景?
【发布时间】:2019-05-11 08:56:22
【问题描述】:

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

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

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

有没有办法通过 API 自动化端到端地自动化这个场景?

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

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

  2. 接受范围→字节

Body:人类不可读的流对象。

状态:200 正常

如果 e2e 自动化不可能/不可行,那么在这种情况下自动化的接受标准应该是什么?

【问题讨论】:

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


    【解决方案1】:

    2 个选项。

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

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

    编辑 - 也看到这个答案:https://stackoverflow.com/a/53050249/143475

    【讨论】:

    • 如果我是正确的,在第一种情况下,我需要保存一个示例 excel 文件以进行比较,而在这里,excel 将生成运行时,我需要使用请求正文验证内容.
    • @deepakmathpal 这就是我所说的。如果您说您的 excel 每次都会有所不同,那么您必须选择选项 2。一切顺利
    【解决方案2】:

    找出一种使用 Java 和空手道来实现解决方案的方法。步骤如下:

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

      还有 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 文件(针对特定请求的实际文件和您预期的文件)。谷歌一下,你会找到代码。指定,其返回类型为布尔值。

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

    并匹配 excelCompareResult == true

    希望它会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 1970-01-01
      • 2019-10-15
      相关资源
      最近更新 更多