Python - 为使用远程访问的功能编写单元测试?

时间:2015-11-05 14:19:14

标签: python unit-testing paramiko ftplib

我已创建此功能,其中System定期连接到远程位置,检查指定的目录,如果在那里找到特定文件,则会将数据导入系统。

使用paramikoftplib实施转移功能。所以我想知道是否有可能以某种方式在我的模块的一个目录中创建一些“假的”SSH连接,因此它将像一个远程位置,其中将有要导入的测试文件(至少有paramiko行为) ?

那么单元测试可以在没有实际连接到某个远程位置的情况下运行吗?有什么想法吗?

更新以获得更好的问题,以下是可能具有unittest的方法示例(unittest将测试我是否可以获得sftp个对象):

import socket
from paramiko import AuthenticationException, Transport, SFTPClient

def get_sftp_connection(self, log_error=True):
    self.ensure_one()
    login = self.login_id
    LogCustom = self.env['log.custom'] # Custom thing, no need for unittest here
    ref = self._get_rec_description()
    try:
        transport = Transport((login.host, login.port))
        transport.connect(username=login.user, password=login.passwd)
        sftp = SFTPClient.from_transport(transport)            
    except socket.gaierror:
        msg = _("Name or service '%s' not known") % (login.host)
        if log_error:
            LogCustom.log_error_event(operation='read', ref=ref, name=msg)
            return None
        else:
            raise ValidationError(msg)
    except AuthenticationException:
        msg = _("Bad username or password")
        if log_error: # No need for unittest
            LogCustom.log_error_event(operation='read', ref=ref, name=msg)
            return None
        else:
            raise ValidationError(msg)

    return sftp

0 个答案:

没有答案