gpt4 book ai didi

python - 如何模拟我无法访问的对象属性?

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:42 24 4
gpt4 key购买 nike

我正在尝试在我的单元测试中模拟以下 View 的 parser.html_source 属性。我想用该页面以前下载的 html 覆盖它。

views.py:

    def parse_online_page(request):
site_manager = SiteManager(Constants.LOGIN)
site_manager.login()
site_manager.change_to_frame(Constants.HEAD)

parser = HeadParser(html_source=site_manager.page_source)
parser.parse()

return redirect('another_page')

这是我的单元测试:

    TESTDATA_PATH = 'core/tests/assets'


class TestSession(TestCase):
def test_parser_view(self):
with patch('core.parsers.HeadParser') as parser_mock:
with open(os.path.join(TESTDATA_PATH, 'frame_head.html'), encoding='utf8') as f:
parser_mock.html_source = f.read()

response = self.client.get(reverse('core:parse_online_page'))
self.assertEqual(response.status_code, 302)

# assert that my html test asset was parsed correctly

不幸的是,这不会覆盖从此类生成的所有实例中的 HeadParser 的 html_source 属性。

我什至不知道这是否是适合模拟的属性,我完全一无所知。

最佳答案

记住模拟文档中的建议:在使用类的地方打补丁,而不是在定义类的地方打补丁。这意味着您应该模拟 'core.views.HeadParser'

关于python - 如何模拟我无法访问的对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38141480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com