Escribí un código de Python que funciona muy bien, ahora tengo la tarea de escribir pruebas para ese código. Mi equipo usa mock y pytest, pero realmente no he podido copiar, pegar y modificar algo útil. Solo necesito un buen comienzo, por ejemplo, aquí hay una parte de mi código:

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

¿Alguien puede ayudarme a escribir una prueba de unidad simple para esto? Entiendo que en el futuro tendría que pensar en mi código y escribir las pruebas a medida que avanzo, pero nunca había hecho esto antes, así que realmente solo estoy buscando un comienzo práctico para comenzar.

3
Naim Salameh 4 ene. 2017 a las 23:41

2 respuestas

Las pruebas unitarias garantizan que el código funcione según los requisitos. Obtenga los requisitos y escriba pruebas para verificar que el código funcione y muestre que el código arroja los errores apropiados. Puede utilizar RobotFramework u otro software de automatización de pruebas para automatizar las pruebas. Algunas preguntas que puede hacerse se enumeran a continuación:

ssh = paramiko.SSHClient()

  • ¿Existe paramiko.SSHClient?
  • ¿está funcionando?
  • ¿y si falla?
  • ¿Obtiene un error o el SW se cuelga?

ssh.load_system_host_keys()

  • ¿Puedes cargar las claves del sistema?
  • ¿Cómo puedes verificar esto?

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

  • ¿Cómo puedes probar que existe la conexión?
  • ¿Qué sucede si intenta conectarse a otro host?
  • ¿Recibes un mensaje de error?
  • ¿Puedes iniciar sesión con el nombre de usuario 'ubuntu'?
  • ¿Qué pasa si prueba con otro nombre de usuario?
  • ¿Falla la conexión?
  • ¿Obtiene un error genérico para no dar pistas a los crackers sobre su seguridad?

La prueba de la prueba unitaria suele ser una captura de pantalla, una entrada de registro o alguna documentación que muestre que obtuvo el resultado que esperaba cuando ejecutó la prueba. Espero que esto ayude.

1
Jack Slingerland 22 dic. 2017 a las 03:03

Puede usar el módulo de prueba de la unidad como se muestra a continuación

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()

Puede encontrar información detallada sobre cómo utilizar Unittest aquí https://docs.python.org /2/library/unittest.html

Una sugerencia: robotframework es una mejor opción para diseñar casos de prueba en comparación con la prueba unitaria, por lo que hasta que no sea obligatorio, puede invertir su tiempo en Robotframework

1
pankaj mishra 22 dic. 2017 a las 09:13