我有一个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,但文档让我比起初时更加困惑。
答案 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。