Python 机器人框架-由IAM保护的AWS API网关
背景 我一直在使用和编写针对通过AWSAPI网关公开的RESTful端点的自动化测试。所以我写的测试大致如下:Python 机器人框架-由IAM保护的AWS API网关,python,amazon-web-services,python-requests,robotframework,aws-api-gateway,Python,Amazon Web Services,Python Requests,Robotframework,Aws Api Gateway,背景 我一直在使用和编写针对通过AWSAPI网关公开的RESTful端点的自动化测试。所以我写的测试大致如下: *** Settings *** Library Collections Library RequestsLibrary *** Test Cases *** Get Requests Create Session Sess https://<api-gateway-url> ${r
*** Settings ***
Library Collections
Library RequestsLibrary
*** Test Cases ***
Get Requests
Create Session Sess https://<api-gateway-url>
${resp}= Get Request Sess /path/to/my/api?param=value
Should Be Equal As Strings ${resp.status_code} 200
Dictionary Should Contain Value ${resp.json()} someValueIwantToVerify
***设置***
图书馆藏书
图书馆申请图书馆
***测试用例***
获取请求
创建会话Sess https://
使用这些服务的应用程序是用javascript编写的,用于对请求进行签名。使用AWS签名
Authorization type,在Postman中(手动)测试也很容易。然而,我正在努力找出机器人框架的策略
问题
从最广泛的意义上讲,我想知道是否还有其他人在使用Robot框架测试IAM安全API网关端点。如果是这样,你是如何做到的
更具体地说:
- 是否有一个现有的机器人框架库来解决这个用例
- 如果不是,写我自己的库是我唯一的选择吗
- 如果我一直在写库(),我会定义什么类型的关键字,以及如何使用它们
我不知道有哪个RF库可以满足您的需求,但我的第一反应是使用Amazon自己的AWS Python SDK(boto3),并围绕它编写一个精简的关键字包装库。对于使用AWS S3的测试用例,我已经这样做了,但是boto3还支持API网关:请求库接受一个auth
参数,该参数应该是的子类
事实证明,修改RequestsLibrary
以利用此现有功能总共需要两行代码(不包括注释、测试和空格的可读性):
有时候,答案只是去做
新的Create Custom Session
关键字将接受任何任意的auth
对象,包括由生成的对象(我强烈推荐)
现在包含如何和如何与新关键字一起工作的详细信息
@_mero提到了bot3
,这几乎可以肯定是您想要使用它来实际封送凭证。您不希望在测试中像issue/pull请求中的简单示例那样对它们进行硬编码。我仍然愿意接受这些想法;没有和图书馆结婚。如果您有任何贡献,请添加答案或评论。也就是说,这反映了我目前的想法:
def create_custom_session(self, alias, url, auth, headers={}, cookies=None, timeout=None, proxies=None, verify=False, debug=0, max_retries=3, backoff_factor=0.10, disable_warnings=0):
return self._create_session(alias, url, headers, cookies, auth, timeout, max_retries, backoff_factor, proxies, verify, debug, disable_warnings)