- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为内部使用它的一个对象模拟流式 requests.get 函数。
我特别需要测试以下方法:
class MyObject(object)
def __iter__(self):
payload = {"op": "OPEN"}
response = requests.get("http://" + self.parsed_uri.uri_path, params=payload, stream=True)
return response.iter_lines()
def read(self, size=None):
if not size or size < 0:
payload = {"op": "OPEN", "offset": self.offset}
self.offset = 0
else:
payload = {"op": "OPEN", "offset": self.offset, "length": size}
self.offset = self.offset + size
response = requests.get("http://" + self.parsed_uri.uri_path, params=payload, stream=True)
return response.content
我需要 requests.get
返回类似“abc\n123”的内容
然后我的测试方法应该如下所示:
@mock.patch('requests.get', mock.Mock(side_effect=mocked_requests_get))
def test_iter(self, mock_get):
object = MyObject(ParseUri("http://host/path"))
self.assertEqual(object.next(), "abc")
self.assertEqual(object.next(), "123")
@mock.patch('requests.get', mock.Mock(side_effect=mocked_requests_get))
def test_read(self, mock_get):
object = MyObject(ParseUri("http://host/path"))
self.assertEqual(object.read, "abc\n123")
我正在尝试实现mocked_requests_get,但不幸的是我无法使其工作。可以这样使用模拟库吗? mocked_requests_get
应该是什么样子?
最佳答案
UPD。如果没有完整的示例,无法说出您的代码到底有什么问题。我如何使用 responses
模块解决这个问题:
import requests
import unittest
import responses
class Foo(object):
def __init__(self, uri):
self.uri = uri
def __iter__(self):
payload = {"op": "OPEN"}
response = requests.get("http://" + self.uri, params=payload,
stream=True)
return response.iter_lines()
class TestFoo(unittest.TestCase):
@responses.activate
def test_iter_lines(self):
responses.add(responses.GET, "http://local.host/", body='abc\n123')
r = iter(Foo("local.host"))
self.assertEqual(r.next(), "abc")
self.assertEqual(r.next(), "123")
if __name__ == '__main__':
unittest.main()
附注也许您想在调用此函数之前返回迭代器?
self.assertEqual(object.next(), "123")
关于Python 模拟 requests.get 内容和 iter_lines(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32113298/
这里的任何人都经历过使用分块数据编码的请求和 HTTP 流。 我想知道 Requests 是否本质上知道服务器提供的 block 大小,并在 requests.iter_lines() 中使用它作为
我正在使用 Boto3 在 Python 脚本中读取 Athena 查询的结果。 我有以下代码,可以在 AWS Lambda 中正常运行。 def get_athena_results(s3_buck
我正在尝试为内部使用它的一个对象模拟流式 requests.get 函数。 我特别需要测试以下方法: class MyObject(object) def __iter__(self):
我正在使用 Python 请求得到一个 ChunkedEncodingError(e)。我正在使用以下内容来删除 JSON: r = requests.get(url, headers=auth, s
当我从服务器读取数据时,我需要找到一种方法来顺利管理服务器停顿。我写了下面的代码: def listener(): resp = requests.get(someurl, stream
我是一名优秀的程序员,十分优秀!