mock paramiko.SSHClient()。exec_command()

时间:2016-03-21 15:50:11

标签: python mocking paramiko

我需要通过ssh.exec_command()模拟执行一些远程命令 它将tuple(stdin,stdout,stderr)作为paramiko.ChanelFile对象返回。

所以,我输出命令作为字符串(我想要,exec_command()返回)以及如何用输出字符串创建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()方法。

1 个答案:

答案 0 :(得分:2)

参见https://stackoverflow.com/a/8168742/5512755 MagicMock也在这里工作。

stdout = mock.MagicMock()
stdout.read().strip.return_value = "file1\nfile2\nfile3\n"

会做到这一点。