Python 机器人框架-由IAM保护的AWS API网关

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

背景

我一直在使用和编写针对通过AWSAPI网关公开的RESTful端点的自动化测试。所以我写的测试大致如下:

*** 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)