我是Tavern新手,我正在为AWS API Gateway应用程序实施测试。
案例描述和常规方法
在我的例子中,我使用预签名的URL将文件直接上传到S3存储桶。预签名URL由以下属性组成:
url = 'https://<bucket>.s3.amazonaws.com/'
fields:
key=<filename>.zip
x-amz-algorithm=***
x-amz-credential=***
x-amz-date=***
x-amz-security-token=***
policy=***
x-amz-signature=*** 在正常的cURL请求中,它的用法如下:
curl -v \
-F key=<filename>.zip \
-F x-amz-algorithm=*** \
-F x-amz-credential=*** \
-F x-amz-date=*** \
-F x-amz-security-token=*** \
-F policy=*** \
-F x-amz-signature=*** \
-F file=@<filename>.zip \
'https://<bucket>.s3.amazonaws.com/'已实现的测试
正如您所看到的,有必要使用cURL的-F标志,它构成了一个multipart/form-data POST请求。
在Tavern方法中,正如我所读到的,-F等同于files,因此如下所示:
stages:
- name: UPLOAD A FILE TO S3
request:
method: POST
url: "https:/<bucket>.s3.amazonaws.com/"
files:
key: target.zip
x-amz-algorithm: ***
x-amz-credential: ***
x-amz-date: ***
x-amz-security-token: ***
policy: ***
x-amz-signature: ***
file: '@target.zip'
response:
status_code: 200错误
但它失败了,错误如下:
Error: <value of x-amz-algorithm> file not found所以它认为字段是文件,所以它失败了。
有没有可能在Tavern中实现这种情况,因此我的实现在某个地方是错误的,或者这在Tavern中还不可能?
致以亲切的问候,
Rshad
发布于 2019-10-09 20:32:12
试试这个:
stages:
- name: UPLOAD A FILE TO S3
request:
method: POST
url: "https:/<bucket>.s3.amazonaws.com/"
data:
key: target.zip
x-amz-algorithm: ***
x-amz-credential: ***
x-amz-date: ***
x-amz-security-token: ***
policy: ***
x-amz-signature: ***
files:
file: "target.zip"
response:
status_code: 200https://stackoverflow.com/questions/58303849
复制相似问题