[英]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.