模拟 paramiko.SSHClient().exec_command()
mock paramiko.SSHClient().exec_command()
我需要通过 ssh.exec_command() 模拟执行一些远程命令
它 returns 元组 (stdin, stdout, stderr) 作为 paramiko.ChanelFile 对象。
因此,我将命令输出为字符串(我想要,exec_command() 到 return)以及如何使用我的输出字符串创建 ChanelFile 对象的问题。
伪代码:
def send_command(self, cmd)
self.client.connect(hostname=self.host,
username=self.user,
password=self.password,
timeout=self.timeout)
stdin, stdout, stderr = self.client.exec_command(cmd)
return stdin, stdout, stderr
if __name__ == '__main__':
stdin, stdout, stderr = report.send_command('ls -la')
resp = stdout.read().strip()
所以我需要创建 stout 才能在其上使用 运行 read() 方法。
见
MagicMock 也适用于此。
stdout = mock.MagicMock()
stdout.read().strip.return_value = "file1\nfile2\nfile3\n"
会成功的。
我需要通过 ssh.exec_command() 模拟执行一些远程命令 它 returns 元组 (stdin, stdout, stderr) 作为 paramiko.ChanelFile 对象。
因此,我将命令输出为字符串(我想要,exec_command() 到 return)以及如何使用我的输出字符串创建 ChanelFile 对象的问题。
伪代码:
def send_command(self, cmd)
self.client.connect(hostname=self.host,
username=self.user,
password=self.password,
timeout=self.timeout)
stdin, stdout, stderr = self.client.exec_command(cmd)
return stdin, stdout, stderr
if __name__ == '__main__':
stdin, stdout, stderr = report.send_command('ls -la')
resp = stdout.read().strip()
所以我需要创建 stout 才能在其上使用 运行 read() 方法。
见 MagicMock 也适用于此。
stdout = mock.MagicMock()
stdout.read().strip.return_value = "file1\nfile2\nfile3\n"
会成功的。