【发布时间】:2015-01-30 14:43:01
【问题描述】:
我来到了我以前从未在测试中使用过的 mock 库。如果它在线或不在线,我需要来自服务器的响应(服务器实际上并不存在)。首先,我需要检查该服务器 IP,然后使用 TRUE 或 FALSE 的响应检查它的状态。 Server.object 应该来自 models.py 所以我想我需要在这里开始使用模拟库。也许你们中的一些人可以向我解释或向我展示一些从“模拟”服务器获得虚假响应的示例。我已经阅读了 Django testing , mock lib 官方文档,但没有一个给我足够的信息来模拟来自假服务器的响应。
代码示例:
def ssh_server(server_list, timeout=200):
online = False
response = []
server_state = []
timeout_stamp = datetime.datetime.now() + datetime.timedelta(seconds=timeout)
for obj_id in server_list:
server = models.Server.objects.get(id=obj_id)
ip = server.ip
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
while True:
try:
client.connect(ip, username='root')
online = True
except:
online = False
【问题讨论】:
-
您的应用程序通常如何连接到服务器?请求模块?如果确实如此,您需要嘲笑它。也许在您的问题中添加一些代码示例,如果不了解实现,很难说需要模拟什么。
-
@GlenSwinfield App 使用 paramiko 连接到服务器。我会在星期一在这里发布一些有用的代码。
-
@GlenSwinfield 有什么解决办法吗?
-
所以需要强制client.connect(ip, username='root') 引发异常?
-
@GlenSwinfield 我希望 client.connect(ip, username='root') 得到 TRUE 而不是异常,所以我的想法是启动模拟服务器并在线响应 = True
标签: python django unit-testing mocking paramiko