为了账号安全,请及时绑定邮箱和手机立即绑定

使用`urllib2.install_opener`不危险吗?

使用`urllib2.install_opener`不危险吗?

开满天机 2021-03-12 10:10:05
我正在开发一个项目,如果我可以urlopen在测试期间进行模拟,那将非常方便。有人向我指出,通过模拟opener和使用,这是可能的(并且很容易)urllib2.install_opener。但是,由于文档中有此注释,我感到担心:将OpenerDirector实例安装为默认的全局打开程序。这是否意味着如果我依赖的其他代码正在使用,我的程序可能会意外中断urlopen?
查看完整描述

2 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

暗示的正是您所期望的。程序中所有随后的调用urllib2.urlopen,直到退出或install_opener再次调用之前,都将使用打开器。

那是否“危险”取决于您的用例。如果您的代码中有其他部分正在使用urllib2.open并且您不希望它们被模拟,那么是的,这是一个坏主意,因为它们将被模拟。

在这种情况下,您需要获取要模拟的代码my_opener.open而不是urllib2.open。如果您设计要测试的代码,这应该很容易。如果您需要在事后进行猴子补丁代码,那会有些棘手,但是有各种各样的可能性。例如,如果要模拟给定模块中的所有调用,只需替换foomodule.urllib2 = my_opener并设置即可my_opener.urlopen = my_opener.open


查看完整回答
反对 回复 2021-03-29
  • 2 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信