[英]Mocking Subproces Calls in Python
我正在尝试在模拟库中使用mock.patch
装饰器,但遇到了问题。 我有这个 init function 在那里我进行了两个子进程调用。 第一次在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)
但我似乎无法让它工作。 在修补环境中无法拥有的东西的同时,我将如何测试这样的初始化函数? 提前感谢您的帮助。
我从您的问题中了解到您想从您的文件中模拟修补 Subprocess.Popen() 调用。 为此,您应该使用以下方法:-
让我们假设您的文件名是您要为其创建单元测试的场景。 因此:- 在 unittest 文件中,您应该写:-
import library
@mock.patch("library.subprocess")
def test_subprocess_call(mock_subprocess):
mock_subprocess.Popen.return_value = None
我希望你能找到你的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.