Je viens de trouver une bibliothèque fictive dans Python2.7 et voudrais désintéresser ma fonction. Quel que soit le tutoriel que j'ai lu, il concerne toujours les cours. Je ne peux pas me moquer de la fonction pour travailler. Le projet est structuré de la façon dont j'ai quelques fonctions d'aide à utiliser dans une fonction de collecte et d'analyse des données de la base de données. Je veux simuler la fonction de base de données et la fonction de requête. Pour le cas simple, il ressemble à ceci:sortie de la fonction fictive unittest
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()
Je me attendais à ce que le @mock.patch
remplacera la fonction de l'appel, mais je peux le faire fonctionner. J'ai ces erreurs:
======================================================================
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
Y at-il un moyen d'utiliser un autre résultat de fonction dans une autre fonction? Je suis contraint d'utiliser Python2.7