Ich versuche, ein Mock von Matplotlib zu erzeugen, so dass ich meine Dokumente mit ReadTheDocs kompilieren kann, aber ein Problem haben.Wie zu mokieren, so dass `von x-Import *` funktioniert
In meinem Code importiere ich Matplotlib mit from matplotlib.pyplot import *
.
Ich verwende den folgenden Code für meine Mocks (wie vom ReadTheDocs FAQ vorgeschlagen):
class Mock(object):
def __init__(self, *args, **kwargs):
pass
def __call__(self, *args, **kwargs):
return Mock()
@classmethod
def __getattr__(cls, name):
if name in ('__file__', '__path__'):
return '/dev/null'
elif name[0] == name[0].upper():
return type(name,(), {})
else:
return Mock()
MOCK_MODULES = ['numpy', 'scipy', 'matplotlib', 'matplotlib.pyplot']
for mod_name in MOCK_MODULES:
sys.modules[mod_name] = Mock()
Wenn jedoch from matplotlib.pyplot import *
läuft ich einen Fehler sagen, dass TypeError: 'type' object does not support indexing
.
Gibt es eine Möglichkeit, dass ich meine Mock ändern kann, damit ich Matplotlib mit der from x import *
Art importieren kann? Ich brauche keine bestimmten Funktionen, die verfügbar gemacht werden müssen, ich brauche sie nur, damit sie importiert werden können, damit ReadTheDocs den Code richtig importieren kann.
Randbemerkung: Sie nicht Ihre eigene Allzweck Mock rollen. Verwenden Sie die ausgezeichnete "Mock" -Bibliothek, in 3.3. Es ist sogar in der Standardbibliothek. – delnan
Danke für den Kommentar - Ich fand, dass das Importieren der "Mock" -Bibliothek und dann die Verwendung der "Mock.Mock" -Klasse statt der von ReadTheDocs vorgeschlagenen Klasse alles gut funktioniert. – robintw