Ich habe gerade eine Pseudo-Bibliothek in Python2.7 gefunden und möchte meine Funktion zu vereinen. Welches Tutorial ich auch lese, es geht immer um Klassen. Ich kann nicht spotten Funktion zu arbeiten. Das Projekt ist so strukturiert, dass ich einige hilfreiche Funktionen habe, die in einer Funktion zum Sammeln und Analysieren von Daten aus der Datenbank verwendet werden können. Ich möchte Datenbankfunktion und Abfragefunktion vortäuschen. Für den einfachen Fall sieht es so wie:Unitest Mock-Funktion Ausgabe
import unittest
import mock
def queryFnc(arg=0):
# imitate returned result from a query
if arg == 0:
return "queryFunc 0"
else: return "queryFunc 1"
def parsingFunc():
# function will parse result returned from a query
myString = queryFnc().upper()
return myString
class Test(unittest.TestCase):
def test_queryFunc0(self):
self.assertEquals("queryFunc 0", queryFnc(arg=0))
def test_queryFunc1(self):
self.assertEquals("queryFunc 1", queryFnc(arg=1))
@mock.patch('.queryFnc', return_value='queryMock')
def test_queryMock(self, queryFnc):
self.assertEquals('queryMock', queryFnc())
def test_parsingFunc(self):
self.assertEquals('QUERYFUNC 0', parsingFunc())
@mock.patch('.queryFnc', return_value='queryMock')
def test_parsingFuncMock(self):
self.assertEquals('QUERYMOCK', parsingFunc())
if __name__ == "__main__":
unittest.main()
ich erwartet, dass die @mock.patch
die Funktion auf den Anruf ersetzen, aber ich kann es bekommen zu arbeiten. Ich habe diesen Fehler:
======================================================================
ERROR: test_queryMock (__main__.Test)
----------------------------------------------------------------------
Traceback (most recent call last):
File "\site-packages\mock\mock.py", line 1297, in patched
arg = patching.__enter__()
File "\site-packages\mock\mock.py", line 1353, in __enter__
self.target = self.getter()
File "\site-packages\mock\mock.py", line 1523, in <lambda>
getter = lambda: _importer(target)
File "\site-packages\mock\mock.py", line 1206, in _importer
thing = __import__(import_path)
ValueError: Empty module name
ist es eine Möglichkeit, unterschiedliches Funktionsergebnis in einer anderen Funktion zu benutzen? Ich bin gezwungen, Python2.7