用于paramiko ssh连接的Python unittest

问题描述 投票:2回答:2

我编写了一些效果很好的python代码,现在我的任务是为该代码编写测试。我的团队使用mock和pytest,但我真的无法复制粘贴和修改有用的东西。我只需要一个启动,例如这里是我的代码的一部分:

ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.connect(hostname='1.2.3.4', username='ubuntu')

有人可以帮我写一个简单的单元测试吗?我明白,在我前进的过程中,我必须考虑我的代码并编写测试,但我之前从未这样做过,所以我真的只是想要开始实际的开始。

python-3.x unit-testing
2个回答
0
投票

单元测试确保代码按要求工作。获取需求并编写测试以检查代码是否正常工作并显示代码会引发相应的错误。您可以使用RobotFramework或其他测试自动化软件来自动化测试。您可能会问自己的一些问题如下:

ssh = paramiko.SSHClient()

  • paramiko.SSHClient存在吗?
  • 它有效吗?
  • 怎么会失败?
  • 你得到一个错误或SW挂起?

ssh.load_system_host_keys()

  • 你可以加载系统密钥吗?
  • 你怎么验证这个?

ssh.connect(hostname='1.2.3.4', username='ubuntu')

  • 你怎么能证明这种联系存在?
  • 如果您尝试连接到其他主机会发生什么?
  • 你收到错误信息吗?
  • 你能用用户名'ubuntu'登录吗?
  • 如果你尝试其他用户名怎么办?
  • 连接失败了吗?
  • 您是否收到了一般性错误,因此您没有提供关于安全性的破解者线索?

单元测试的证明通常是屏幕捕获,日志条目或一些文档,显示您在运行测试时获得了预期的结果。希望这可以帮助。


0
投票

你可以使用下面的单元测试模块

import unittest
import paramiko

class SimpleWidgetTestCase(unittest.TestCase):    #This class inherits unittest.TestCase

    #setup will run first 
    def setUp(self):
        self.ssh = paramiko.SSHClient()
        self.ssh.load_system_host_keys()
        self.ssh.connect(hostname='1.2.3.4', username='ubuntu')

    #Your test cases goes here with 'test' prefix
    def test_split(self):
        #your code here
        pass


    #this will run after the test cases
    def tearDown(self):
        #your code to clean or close the connection
        pass

if __name__ == '__main__':
    unittest.main()

有关如何使用unittest的详细信息,请访问https://docs.python.org/2/library/unittest.html

一个建议:与单元测试相比,机器人框架是设计测试用例的更好选择,所以除非它不是强制性的,否则你可以把时间花在Robotframework上

© www.soinside.com 2019 - 2024. All rights reserved.