unittest marco de pruebas de unidad de pitón

prueba de unidad

Proporcionando dos métodos de carga la unidad de pruebas:

1. El módulo de prueba de prueba de unidad de carga directamente a través del método () unittest.main;

2. Añadir la totalidad del conjunto de pruebas de células de prueba establecidos, y después de cargar todos los objetos de prueba a la vez.

casos de prueba de unidad

unittest marco construido mediante la prueba de TestCase clase, y requiere de todas las clases de prueba personalizada debe heredar la clase, que es la clase base para todos los casos de prueba. Crear un método de prueba personalizada debe comenzar con "prueba".

Varias clases método TestCase especial definida de la siguiente manera:

() 1. setUpClass: Antes de ejecutar cualquier método de ensayo se ejecuta, la preparación de prueba de unidad, deben ser modificados para usar decorador @classmethod, ejecutado antes de la función de configuración, todo el proceso de prueba se lleva a cabo sólo una vez.

2. Configuración (): método antes de cada ejecución de prueba, la operación de inicialización antes de la prueba;

3. tearDown (): método después del final de cada operación de prueba de funcionamiento, limpiar después de la prueba;

Después de la ejecución de toda la ejecución del método de ensayo después del final de la carrera, la unidad de pruebas finales para limpiar, debe utilizar decorador @classmethod modificado, tearDown (), todo el proceso de prueba se realiza sólo una vez: 4. tearDownClass ().

# Presentación de tiempo 
Tiempo de importación
# introdujo WebDriver biblioteca
de selenio WebDriver importación
La introducción del módulo unittest # 
Importación unittest

clase Visita (de unittest.TestCase):
    DEF la Configuración (Ser):
        self.driver webdriver.Chrome = ()
   # llama al código API contenida en el proceso se inicia con la "prueba" de comandos
    def test_visit (auto) :
        self.driver.get ( "http://www.baidu.com" )
        self.driver.find_element_by_id ( "kW" ) .send_keys ( "selenuim" )
        el time.sleep (2)
        Imprimir (self.driver.current_url)

    tearDown DEF (Ser):
        self.driver.quit ()
# método main () es el método predeterminado de clases al inicio de la ejecución de pruebas, no necesariamente una aplicación de casos de prueba, pero el nombre del método de acuerdo con el ASCII de codificación de acuerdo con la de arriba hacia abajo la ubicación de la ejecución de la orden.
la __name__ == SI '__main__' :
    unittest.main ()
métodos de aserción

Por método unittest proporcionado assertEqual () para afirmar que el resultado es el mismo que los resultados esperados. Hay muchos métodos de afirmación, no se incluyen aquí.

Resultados del ensayo:

. "" Dot representa un caso de prueba mediante el uso de la operación;

Con "F" significa un fracaso para ejecutar casos de prueba;

Con "s" representa una prueba omitida;

Con "E" representa un ejecutan casos de prueba de error;

No haga caso de prueba

prueba de ignorar se divide en incondicional y condicional ignorado ignorados. Cuando se ejecuta la prueba, ya veces hay que pasar por alto algunos de los casos de prueba, o de omitir la prueba cuando el caso de prueba se encuentran una serie de criterios, o directamente a los casos de prueba que fallen.

unittest proporciona una implementación de estos requisitos decorador.

Importar el unittest
clase del MyTest (de unittest.TestCase):
    @ unittest.skip ( "salto de prueba decorativa sin condiciones, las necesidades de prueba para saltar las razones" )
    DEF test_skip (Ser):
        Imprimir ( "Test A" )
    @ unittest.skipIf (3> 2, "cuando la condición es verdadera, la prueba es la decoración saltado" )
    DEF test_skipIf (Ser):
        Imprimir ( "ensayo B" )
    @ unittest.skipUnless (3> 2, "cuando la condición es verdadera, la ejecución de pruebas decorado " )
    DEF test_skip_unless (Ser):
        Imprimir ( " la prueba c " )
    # decorador de aguas abajo, independientemente de si los resultados de fracaso se marcan como fallado en la prueba, pero no tiran la información de fallo
   
@ unittest.expectedFailure
    DEF test_expected_failure ( auto):
        self.assertEqual (2, 3)

Uso HTMLTestRunner generar el informe de prueba HTML

Tras la finalización de la unidad de prueba, el informe de la prueba puede ser generado por HTMLTestRunner HTML. Antes de realizar los resultados de prueba se emiten a la consola, no es ni fácil de leer ni atractiva.

Descargar archivo HTMLTestRunner.py:

1) Descargar el archivo HTMLTestRunner.py: http://tungwaiyip.info/software/HTMLTestRunner.html

2) ventanas de archivos del sistema operativo se descargan en la pitón lib ruta de la carpeta de archivos de instalación;

Ubuntu archivos del sistema operativo se pueden descargar en la carpeta de ruta de instalación pitón dist-paquetes de archivos;

 

archivos del sistema operativo MacOSX serán descargados en el archivo de instalación site-packages de Python carpeta de la ruta;

Abrir un comando interruptores terminales de la línea roja de la carpeta de archivo de catálogo:

cd /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/

A continuación, copie el archivo descargado a HTMLTestRunner.py la carpeta actual:

 

HTMLTestRunner es python2 a su debido python2 y 3 son parte de los cambios de sintaxis, por lo que es necesario modificar el archivo descargado para su uso en python3 en.

Modificar el archivo archivo HTMLTestRunner.py:

La línea 94 será modificado para la importación io importar StringIO

Línea 539, la self.outputBuffer = StringIO.StringIO () modificado self.outputBuffer = io.StringIO ()

Las primeras 642 filas serán si no rmap.has_key (CLS): modificado si no CLS en rmap:

La primera línea 766, la uo = o.decode ( 'latino-1') modificado uo = E

Línea 772, el UE = e.decode ( 'latino-1') Modificado ue = E

第 631 行, 将 de impresión >> sys.stderr, '\ nTime transcurrido:% s' % (self.stopTime-self.startTime) 修改 成 de impresión (sys.stderr, '\ nTime transcurrido:% s' % (uno mismo. stopTime-self.startTime))

3, la introducción de uso:

1) 引 包: de importación HTMLTestRunner *

2), tales como:

si __name__ == '__main__':
    informe = REPORT_PATH + '\\ report.html'
    con (informe, 'wb') abierto como f:
        corredor = HTMLTestRunner (f, verbosidad = 2, título = 'Test', description ='测试报告')
        runner.run (TestBaidu (' test_search '))

备注:

1) Empecé con la HTMLTestRunner importación, cuando la ejecución de los anteriores

2) el error de la línea penúltima: TypeError: 'módulo' objeto es no exigible.
Fuera de dos maneras cuando se utiliza la diferencia, módulo de importación: Nombre del módulo para un uso definido complemento y de importación HTMLTestRunner * No es necesario añadir. Puede ser las dos formas siguientes:
. 1,
de HTMLTestRunner importación *
Runner HTMLTestRunner = (F, el nivel de detalle = 2, título = 'Test', description = 'informe de prueba')

2,
importación HTMLTestRunner
corredor = HTMLTestRunner.HTMLTestRunner (f, verbosidad = 2, título = 'Test', descripción = '测试报告')

Por ejemplo:

# Tiempo de introducción de importación de tiempo, os # introducido WebDriver biblioteca desde el selenio importación WebDriver # introdujo unittest módulo de importación unittest # introducido HMTL módulo de informe de la prueba de importación HTMLTestRunner clase de Visita (unittest.TestCase): DEF la Configuración (Ser):         self.driver = webdriver.Chrome () # API de código de llamada se incluirá con el fin de "prueba" de proceso a partir de comandos DEF test_visit (ser):         self.driver.get ( "http://www.baidu.com" )









   

  
   


        self.driver.find_element_by_id ( "kw" ) .send_keys ( "la Selenium" )
        self.driver.find_element_by_css_selector ( "la entrada # su.bg.s_btn" ) .click ()
        la time.sleep (2)
        self.assertEqual ( "selenium_ Baidu buscar " , self.driver.title)

    DEF tearDown (Ser):
        self.driver.quit ()

SI __name__ == '__main__' :
    # conjunto de pruebas
   
TestUnit = unittest.TestSuite ()
    # añaden un caso de prueba para un conjunto de pruebas
   
testunit. addTest (de Visita ( "test_visit" ))
    # obtener la hora actual
   
nowtime = time.strftime ("% D %% m_Low Y_% H:% M:% S" )
    # definen una trayectoria de almacenamiento de informes, y un diferentes nombres distinguidos generan múltiples informes del tiempo de ejecución del script
   
REPORT_PATH = '/ la usuario / yuandaping / Descargas /'
   
Informe = + REPORT_PATH '/' + + nowtime '' report.html
   
# definen informe de la prueba con abierta (informe, 'BM' ) AS F:         Corredor = HTMLTestRunner.HTMLTestRunner (F = Stream, title = ' Baidu Búsqueda informe de prueba ' , description = ' aplicación de ejemplo utilizados: ' ) # prueba de funcionamiento runner.run (TestUnit) # cierre el archivo de informe f.close ()
   


       
       

       
       

Después de ejecutar el script generado archivos de informes: / Users / yuandaping / Descargas / 2019_09_23 17: 53: 54report.html

 

nota:

El DDT es un marco de pruebas de unidad diseñada para bibliotecas de extensión unittest. Se permite el uso de diferentes datos de prueba para una prueba de funcionamiento, y mostrando una pluralidad de casos de prueba.

Instalación: PIP3 instalar ddt

Parametrizada Python es un parámetro de la biblioteca, mientras que el apoyo unittest, la nariz y PYtest marco de pruebas de unidad.

Instalación: PIP3 install parametrizar

Supongo que te gusta

Origin www.cnblogs.com/douyini/p/12650635.html
Recomendado
Clasificación