es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Funciones de pruebas que producen archivos e imprimen en contra de archivos existentes en Unittests.

Tengo dos scripts .py que toman argumentos desde la línea de comando como entradas. Uno de estos scripts produce otro archivo con datos y el otro simplemente imprime datos en la salida estándar.

Quiero escribir pruebas unitarias para probar el contenido tanto del archivo producido por el primer script como los datos impresos en la salida estándar del segundo script en comparación con archivos existentes.

¿Alguna idea de cómo puedo hacer eso? Mi plan es comparar las cadenas línea por línea para el archivo de salida frente al archivo existente y la salida impresa frente al archivo existente. Pero no estoy seguro de cómo puedo almacenar el contenido ya que ninguno de los scripts devuelve nada porque quiero importar los métodos principales de ambos scripts.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar el módulo unittest para escribir pruebas unitarias para sus scripts.

    Para probar el contenido del archivo de salida, puede utilizar el método assertEqual para comparar las cadenas línea por línea. Para probar la salida impresa, puede utilizar el método assertMultiLineEqual.

    Por ejemplo, si tiene un script script1.py que produce un archivo de salida, puede escribir una prueba unitaria así:

    import unittest
    
    class TestScript1(unittest.TestCase):
        def test_output_file(self):
            # Llame al método principal de script1.py
            # Almacene el contenido del archivo de salida en una variable
            output_file_contents = ...
            # Lea el contenido del archivo existente
            with open('existing_file.txt', 'r') as f:
                existing_file_contents = f.read()
            # Compare las dos cadenas línea por línea
            self.assertEqual(output_file_contents, existing_file_contents)
    
    if __name__ == '__main__':
        unittest.main()
    

    De manera similar, puede escribir una prueba unitaria para el segundo script script2.py así:

    import unittest
    
    class TestScript2(unittest.TestCase):
        def test_printed_output(self):
            # Llame al método principal de script2.py
            # Almacene la salida impresa en una variable
            printed_output = ...
            # Lea el contenido del archivo existente
            with open('existing_file.txt', 'r') as f:
                existing_file_contents = f.read()
            # Compare las dos cadenas línea por línea
            self.assertMultiLineEqual(printed_output, existing_file_contents)
    
    if __name__ == '__main__':
        unittest.main()
    

Comments are closed.