Robot Framework RequestsLibrary - 这个cookie怎么会导致类型错误?

时间:2016-03-18 23:02:10

标签: cookies python-requests robotframework

我有一个Robot Framework测试套件,它使用RequestsLibrary来测试RESTful API。测试工作得很好。一个简单的样本调用:

*** Test Cases ***
Test API
    Create API Session
    ${resp} =    Get Request    api_session    /foo/bar
    BlahBlah test the ${resp} etc.


*** Keywords ***
Create API Session
    ${headers_str} =    Evaluate   str('application/json')
    &{headers} =    Create Dictionary    Content-Type=${headers_str}
    Create Session    api_session    ${BASE_URL}    headers=${headers}    verify=True

现在我需要开始为这个测试套件的所有调用添加一些代码覆盖代码覆盖率跟踪的cookie。所以我改编了上面这样的工作代码:

*** Test Cases ***
Test API
    Create API Session
    ${resp} =    Get Request    api_session    /foo/bar
    BlahBlah test the ${resp} etc.

*** Keywords ***
Create API Session
    ${headers_str} =    Evaluate   str('application/json')
    &{headers} =    Create Dictionary    Content-Type=${headers_str}
    ${cookies_str} =    Evaluate   str('{"CodeCoverage":"Test Name","CodeCoverage_Suite":null,"CodeCoverage_Config":null}')
    &{cookies} =    Create Dictionary    CODECEPTION_CODECOVERAGE=${cookies_str}
    Create Session    api_session    ${BASE_URL}    headers=${headers}    cookies=${cookies}   verify=True

但现在Test API测试在Get Request关键字上失败了TypeError: string indices must be integers。这里发生了什么?我认为我误解了我的cookie,但文档让我比起初时更加困惑。

1 个答案:

答案 0 :(得分:1)

这不是您特定问题的答案,但它确实意味着您尝试做的事情即使您确实获得了正确的语法等。 RequestsLibrary不再处理cookie。查看https://github.com/bulkan/robotframework-requests/blob/master/src/RequestsLibrary/RequestsKeywords.py

具体做法是:

# cant pass these into the Session anymore
    self.timeout = float(timeout) if timeout is not None else None
    self.cookies = cookies
    self.verify = verify

我在某个时刻开车疯狂,因为我需要传入的cookie来做某事,当我发现这个评论时,我差点把显示器扔到窗外。我通过Twitter联系了作者,但从未收到过关于为什么这是一个问题的回复。也许我自己甚至完全误解了这种情况,我只是抛弃了我正在做的事情,因为它是一个POC。