我已创建此功能,其中System定期连接到远程位置,检查指定的目录,如果在那里找到特定文件,则会将数据导入系统。
使用paramiko
和ftplib
实施转移功能。所以我想知道是否有可能以某种方式在我的模块的一个目录中创建一些“假的”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