问题描述
我一直在尝试自动化一个测试场景,其中我需要从 S3 存储桶中获取一个 JSON 文件,读取它,然后应用我的逻辑。请注意,我将 JavaScript 与空手道一起使用。
由于我对测试自动化还很陌生,因此我一直在网上对此进行一些研究。到目前为止,我已经获得了我正在尝试使用的 Maven Artifact aws-java-sdk-s3
。
我将此依赖项放在 pom.xml 文件中。
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.953</version>
</dependency>
与此同时,我正在尝试使用 S3 URL 获取特定文件,如下所示:
@sampleTest
Scenario: Get Call Test
Given url 'http://test-bucket.s3.amazonaws.com/'
When method Get
Then status 200
这当前给我 403 状态,因为存储桶不是公开的。
如何将 S3key 和 S3secret 添加到 URL?另外,如果我知道位置(JSONPathURL),如何获取特定文件?熟悉此工具的人可以帮助我吗?
解决方法
应该可以使用空手道模拟 HTTP 请求并传递魔术头。这是一个示例:https://stackoverflow.com/a/62085130/143475 - 如果您只需要一个 GET
,它应该更简单。
也就是说另一个选项是通过 Java 互操作。首先用硬编码编写一个静态辅助方法,然后从空手道调用它会很简单:https://github.com/intuit/karate#calling-java
像这样:
* def data = MyUtils.getJsonFromS3()
一旦开始工作,您就可以考虑将参数传递给 getJsonFromS3()
方法等。