[issue24855] fail to mock the urlopen function

2015-08-16 Thread sih4sing5hong5

sih4sing5hong5 added the comment:

I moved the import urlopen inside the patch.
The mock worked.

Thank you for explanations. I understand now.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24855
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue24855] fail to mock the urlopen function

2015-08-13 Thread sih4sing5hong5

New submission from sih4sing5hong5:

I also posted in stackoverflow: 
http://stackoverflow.com/questions/30978207/python-urlopen-mock-fail

```
from unittest.mock import patch
import urllib
from urllib import request
from urllib.request import urlopen

@patch('urllib.request.urlopen')
def openPatch(urlopenMock):
print(urlopenMock)
print(urlopen)
print(request.urlopen)
print(urllib.request.urlopen)

openPatch()
```
and got

```
MagicMock name='urlopen' id='140645541554384'
function urlopen at 0x7fea9764c268
MagicMock name='urlopen' id='140645541554384'
MagicMock name='urlopen' id='140645541554384'
```
request.urlopen and urllib.request.urlopen worked. Why urlopen had been not 
mocked?

--
components: Library (Lib)
messages: 248500
nosy: sih4sing5hong5
priority: normal
severity: normal
status: open
title: fail to mock the urlopen function
versions: Python 3.3, Python 3.4, Python 3.5, Python 3.6

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24855
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue24855] fail to mock the urlopen function

2015-08-13 Thread sih4sing5hong5

sih4sing5hong5 added the comment:

It is normal because of __all__ syntax.

By:
https://github.com/testing-cabal/mock/issues/313#issuecomment-130564364

--
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24855
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue24855] fail to mock the urlopen function

2015-08-13 Thread R. David Murray

R. David Murray added the comment:

It has nothing to do with __all__, and everything to do with the way namespaces 
work in Python.  'from urllib.request import urllib' creates a name 'urllib' in 
the global namespace of your module pointing to the urlopen function (*before* 
you do your patch), and patch has no effect on the global namespace of your 
module, only on the global namespace of urllib.request.  By contrast, urllib in 
your module's global namespace points to the urllib module, so urllib.request 
points to the urllib.request's global namespace, which patch has altered to 
point to your mock by the time you print its value.

--
nosy: +r.david.murray

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue24855
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com