材料模拟python_模拟-python模拟-在不妨碍实现的情况下修补方法

此答案解决了Quuxplusone用户提供的赏金中提到的其他要求:

对于我的用例而言,重要的是它可以与MagicMock一起使用,即,它不需要我在构造Potato(在此示例中为spud)实例与调用spud.foo(在本例中)之间插入任何代码。我需要2939848654720599599044 从一开始就使用foo的模拟方法来创建,因为我无法控制spud的创建位置。

通过使用装饰器,可以在没有太多麻烦的情况下实现上述用例:

import unittest

import unittest.mock # Python 3

def spy_decorator(method_to_decorate):

mock = unittest.mock.MagicMock()

def wrapper(self, *args, **kwargs):

mock(*args, **kwargs)

return method_to_decorate(self, *args, **kwargs)

wrapper.mock = mock

return wrapper

def spam(n=42):

spud = Potato()

return spud.foo(n=n)

class Potato(object):

def foo(self, n):

return self.bar(n)

def bar(self, n):

return n + 2

class PotatoTest(unittest.TestCase):

def test_something(self):

foo = spy_decorator(Potato.foo)

with unittest.mock.patch.object(Potato, 'foo', foo):

forty_two = spam(n=40)

foo.mock.assert_called_once_with(n=40)

self.assertEqual(forty_two, 42)

if __name__ == '__main__':

unittest.main()

如果替换的方法接受在测试中修改的可变参数,则您可能希望初始化MagicMock *,而不是spy_decorator内部的MagicMock。

*这是我在PyPI上以copyingmock lib形式发布的文档中的食谱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,为了访问QQ空间相册,我们需要登录QQ账号。可以使用Selenium模拟用户登录QQ,然后使用BeautifulSoup解析相册页面,获取相册中的图片链接。 以下是大致的实现步骤: 1. 安装Selenium和BeautifulSoup模块。 2. 使用Selenium模拟用户登录QQ,进入相册页面。 ```python from selenium import webdriver # 创建Chrome浏览器对象 browser = webdriver.Chrome() # 打开QQ登录页面 browser.get("https://mail.qq.com/") # 执行模拟登录操作,具体实现可以参考Selenium文档或其他相关教程 # ... # 进入相册页面 browser.get("http://user.qzone.qq.com/123456789/album") ``` 3. 使用BeautifulSoup解析相册页面,获取相册中的图片链接。 ```python from bs4 import BeautifulSoup # 获取相册页面的HTML源代码 html = browser.page_source # 使用BeautifulSoup解析HTML源代码,获取相册中的图片链接 soup = BeautifulSoup(html, "html.parser") img_links = soup.find_all("img", class_="c_photo_img_img") # 打印图片链接 for link in img_links: print(link["src"]) ``` 4. 下载图片。 ```python import requests # 下载图片 for i, link in enumerate(img_links): img_url = link["src"] response = requests.get(img_url) with open(f"photo_{i}.jpg", "wb") as f: f.write(response.content) ``` 以上只是大致的实现步骤,具体的实现过程可能还需要根据实际情况进行调整。同时,需要注意的是,访问QQ空间相册需要登录QQ账号,因此需要注意账号安全问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值