首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python返回MagicMock响应的字节值

Python返回MagicMock响应的字节值
EN

Stack Overflow用户
提问于 2022-05-23 06:30:23
回答 1查看 239关注 0票数 0

我想模拟使用MagicMock返回图像(字节)的HTTP请求。所以,我在这里有一个简单的函数:

代码语言:javascript
复制
import io
import urllib.request

def blah():
    try:
        req = urllib.request.Request(url='<image url/base64>', data=None, method='GET')
        response = urllib.request.urlopen(req)
    except Exception as e:
        return str(e)

    body = io.BytesIO(response.read())  # error here

    return 'something'

我想测试一下,就像这样:

代码语言:javascript
复制
import unittest
from blah import blah
from unittest.mock import patch, MagicMock

class TestBlah(unittest.TestCase):
    def test_blah(self):
        with patch('urllib.request.urlopen') as mock_urlopen:
            cm = MagicMock()
            cm.getcode.return_value = 200
            cm.read.return_value = open('./download.jpeg')  # an image file
            cm.__enter__.return_value = cm
            mock_urlopen.return_value = cm

            self.assertEqual(blah(), 'something')

当我执行代码时,它会产生错误:

代码语言:javascript
复制
TypeError: a bytes-like object is required, not '_io.TextIOWrapper'

有谁可以帮我?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-23 09:57:03

应该是这样的,

代码语言:javascript
复制
cm.read.return_value = open('./download.jpeg', 'rb').read()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72344101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档