mock-ssh-server
packs a Python context manager that implements an SSH
server for testing purposes. It is built on top of paramiko, so it does
not need OpenSSH binaries to be installed.
As a py.test fixture:
import os from pytest import yield_fixture import mockssh @yield_fixture() def server(): users = { "sample-user": "/path/to/user-private-key", } with mockssh.Server(users) as s: yield s def test_ssh_session(server): for uid in server.users: with server.client(uid) as c: _, stdout, _ = c.exec_command("ls /") assert stdout.read() def test_sftp_session(server): for uid in server.users: target_dir = tempfile.mkdtemp() target_fname = os.path.join(target_dir, "foo") assert not os.access(target_fname, os.F_OK) with server.client(uid) as c: sftp = c.open_sftp() sftp.put(__file__, target_fname, confirm=True) assert os.access(target_fname, os.F_OK)