[英]Robot Framework: send binary data in POST request body with
使用Robot Framework和robotframework-requests运行测试时出现问题。 我需要在正文中发送POST请求和二进制数据。 我已经看过这个问题了,但是还没有真正回答。 这是我的测试用例的样子:
Upload ${filename} file
Create Session mysession http://${ADDRESS}
${data} = Get Binary File ${filename}
&{headers} = Create Dictionary Content-Type=application/octet-stream Accept=application/octet-stream
${resp} = Post Request mysession ${CGIPath} data=${data} headers=&{headers}
[Return] ${resp.status_code} ${resp.text}
问题是我的二进制数据约为250MB。 当使用“ Get Binary File
读取数据时,我看到内存消耗高达2.x GB。 几秒钟后,触发“ Post Request
” Post Request
我的测试被OOM杀死。 我已经看过files
参数,但是似乎它使用了分段编码上传,这不是我所需要的。
我的其他想法是关于将打开文件处理程序直接传递到基础请求库,但是我想那将需要修改robotframework-request。 另一个想法是仅针对此测试退缩。
我在考试中遗漏了什么吗? 解决这个问题的更好方法是什么?
我进行了修改robotframework-request的想法,并添加了此方法
def post_request_binary(
self,
alias,
uri,
path=None,
params=None,
headers=None,
allow_redirects=None,
timeout=None):
session = self._cache.switch(alias)
redir = True if allow_redirects is None else allow_redirects
self._capture_output()
method_name = "post"
method = getattr(session, method_name)
with open(path, 'rb') as f:
resp = method(self._get_url(session, uri),
data=f,
params=self._utf8_urlencode(params),
headers=headers,
allow_redirects=allow_redirects,
timeout=self._get_timeout(timeout),
cookies=self.cookies,
verify=self.verify)
self._print_debug()
# Store the last session object
session.last_resp = resp
self.builtin.log(method_name + ' response: ' + resp.text, 'DEBUG')
return resp
我想我可以改善它并创建请求请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.