Привет всем.
Есть функция getSubRoles(). Она использует совершенно реальный класс pb_access, который запускает внешнюю программу. Хотелось бы не запускать её каждый раз для тестов. Подойдет ли mock?
class ApiBaseClass:
def getSubRoles(self,hosts=None,roless=None,config_path=None):
if hosts==None:
hosts=["127.0.0.1"]
if roless==None:
roless=[]
roles=self.toList(roless)
if isinstance(roles, list)==False:
self.logAndRaiseValueError("type of roles isn't list, it's %s" % type(roles))
playbooks={}
try:
playbooks=self._getPlaybookForRoles(roles,config_path)
except Exception as e:
# TODO: raise or not?
self.logAndRaiseValueError("Can't _getPlaybookForRoles for %s because:%s" % (roles,e) )
# gethering all current tasks
subroles={}
subrolesWithPlaybook={}
with self._lock:
for role in roles:
if subroles.has_key(role)==False:
subroles[role]={}
if subrolesWithPlaybook.has_key(role)==False:
subrolesWithPlaybook[role]={}
if playbooks.has_key(role):
for playbook in playbooks[role]:
if subrolesWithPlaybook[role].has_key(playbook)==False:
subrolesWithPlaybook[role][playbook]={}
try:
options=self.__PLAYBOOK_OPTIONS.copy()
options['playbook']=playbook
tags=pb_access.get_tags(hosts,options)
subroles[role].update(tags)
subrolesWithPlaybook[role][playbook].update(tags)
except Exception as e:
self.logAndRaiseValueError("Can't get_tags because: %s" %e)
return subroles,subrolesWithPlaybook
У меня в коде постоянное чтение и запись в файлы. Можно ли с посошью мок не читать и писать в тестах?