- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要写一个测试,有 StringIO
和 curl
,所以我试着模拟它们,但它返回了错误的数据,与我等待的不一样。
Python 测试函数:
def test_make_curl_request(self):
redirect_url = 'abc'
content = 'Content'
mock_curl = mock.MagicMock()
mock_curl.getinfo = mock.Mock(return_value=redirect_url)
mock_curl.setopt = mock.Mock()
mock_curl.perform = mock.Mock()
mock_io_string = mock.MagicMock()
mock_io_string.getvalue = mock.Mock(return_value=content)
with mock.patch('pycurl.Curl', mock.Mock(return_value=mock_curl)):
with mock.patch('source.lib.StringIO', mock.Mock(return_value=mock_io_string)):
with mock.patch('source.lib.to_str', mock.Mock(return_value=redirect_url)):
with mock.patch('source.lib.to_unicode', mock.Mock(return_value=redirect_url)):
with mock.patch('source.lib.prepare_url', mock.Mock()):
self.assertEqual(init.make_pycurl_request('http://test.rg', 10), (content, redirect_url))
测试函数:
def make_pycurl_request(url, timeout, useragent=None):
prepared_url = to_str(prepare_url(url), 'ignore')
buff = StringIO()
curl = pycurl.Curl()
curl.setopt(curl.URL, prepared_url)
if useragent:
curl.setopt(curl.USERAGENT, useragent)
curl.setopt(curl.WRITEDATA, buff)
curl.setopt(curl.FOLLOWLOCATION, False)
# curl.setopt(curl.CONNECTTIMEOUT, timeout)
curl.setopt(curl.TIMEOUT, timeout)
curl.perform()
content = buff.getvalue()
redirect_url = curl.getinfo(curl.REDIRECT_URL)
curl.close()
if redirect_url is not None:
redirect_url = to_unicode(redirect_url, 'ignore')
return content, redirect_url
所以我对 content
的模拟不起作用,我真的不知道该怎么做。
最佳答案
我认为您创建的模拟对象比您需要的多,而且您没有正确设置返回值。例如,我会将 mock_io_string.getvalue = mock.Mock(return_value=content)
替换为 mock_io_string.getvalue.return_value = content
。
关于Python 模拟不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26195184/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!