Я пытаюсь использовать декоратор mock.patch
в фиктивной библиотеке, но у меня проблемы.У меня есть эта функция инициализации, где я делаю два вызова подпроцесса.Первый раз в self.setPackageQuota()
и второй раз в self.setBandwidthLimit()
.
class User():
def __init__(self, username, plan, domain, owner, diskQuota, diskUsed):
self.setUsername(username)
self.setPlan(plan)
self.setDomain(domain)
self.setOwner(owner)
self.setDiskQuota(diskQuota)
self.setDiskUsed(diskUsed)
self.setPackageQuota()
self.setBandwidthLimit()
self.setPackageQuota ()
def setBandwidthLimit(self):
whmapicall = subprocess.Popen(["whmapi1" , "showbw", 'searchtype=user', 'search=^%s$' % self.username], stdout=subprocess.PIPE)
whmapireturn = whmapicall.stdout.read().split("\n")
for line in whmapireturn:
self.setPackageQuota ()
def setPackageQuota(self):
whmapicall = subprocess.Popen(["whmapi1" , "getpkginfo", "pkg=%s" % self.plan], stdout=subprocess.PIPE)
whmapireturn = whmapicall.stdout.read().split("\n")
for line in whmapireturn:
Я бы предпочел залатать whmapireturn
, чтобы быть чем-то другим.Я тоже не хотел бы не запускать subprocess.Popen
.Моя первоначальная мысль состояла в том, чтобы исправить патчи @mock.patch('subprocess.Popen', MockedClass)
и @mock.patch('whmapireturn', OtherMockedClass)
, но я не могу заставить их работать.Как бы я протестировал функцию инициализации, как это, исправляя вещи, которые я не могу иметь в своей среде?Заранее спасибо за любую помощь.