pytest: use @ pytest.mark.usefixtures () para agregar pasos de desmontaje a los métodos escritos en la clase

Requisitos:

  Los casos de prueba se escriben en el archivo de clase, y hay métodos de casos de uso individuales (nuevas interfaces) que deben restaurarse, por lo que debe agregar un paso de desmontaje a este método.

Proceso de resolución:

  Vea cómo usar el desmontaje:

  • setup_method: solo se aplica a los casos de uso en el conjunto de casos de uso de clase, colocados en la clase, cada caso de uso se llamará una vez
  • setup_function: actúa en casos de uso de def independientes, no en casos de uso en clase
  • setup_class: los casos de uso en el conjunto de casos de uso de la clase, colocados en la clase, solo ejecutan setup_class al comienzo de la ejecución del caso de uso de la clase y teardown_class al final
  • setup_module: se aplica a todos los casos de uso en el módulo, ubicados fuera de la clase, solo ejecuta setup_module al comienzo del caso de uso y teardown_module al final

  Se encuentra que no hay una implementación personalizada de desmontaje para un solo método en la clase, y la atención se centra en el dispositivo.

La solución final:

  Escriba el método de fijación en la clase, y luego el método de prueba utiliza @ pytest.mark.usefixture ("nombre del método de fijación") para especificar el método de caso de uso para llamar al firmware.

clase TestBasicConfiguration: 
    
    @ allure.severity ( ' blocker ' ) 
    @ allure.story ( " Módulo de configuración básica " ) 
    @ pytest.mark.smoke @ pytest.mark.usefixtures (
     "test_message_signatures_create_teardown")
     def test_message_signatures_create (self, get_case_info_ self_qq_me_case_info_ ):
         "" " 
        nueva verificación funcional de la firma mundial de SMS 
        : param get_case_info: información de casos de uso leer 
        : mysql_op param: conexión a la base de datos 
        : registro param: ejemplo de registro 
        : retorno: 
        " "" 
        # reciben la corriente de casos de uso nombre del método, ese archivo JSON case_name 
        case_name = sys._getframe (). f_code.
        co_name# Obtener el nombre del módulo actual, para la lectura de un archivo correspondiente get_case_info JSON usado en el Ejemplo 
        module_name = STR (os.path.basename ( __FILE__ ()) Split. ' ' ) [0]
         Imprimir ( ' nombre del módulo como: {} ' .format (module_name)) 
        url, data, headers = get_case_info (case_name, module_name) 
        res = request.request ( " POST " , url, data = data, headers = headers)
         print (res.json ()) 
        api_res_data = res .json () [ ' código ' ]
         print ( 'Interfaz de valor de retorno: {} ' .formato (api_res_data)) 

        # nueva consulta el código de error 
        data_sql = "" " SELECT t.sign_name sms_center_uat.sms_global_sign la de t = el DONDE t.VALID_STATUS la t.sign_name Y = 1.' Test2 ' " "" 
        mysql_op.execute_sql (data_sql) 
        data = mysql_op.get_data ()
         # mysql_op.close_db () 
        db_query_data = data [0] [0]
         print ( 'El resultado de la consulta de la base de datos es: {} ' .format (db_query_data))
         prueba :
             afirmar api_res_data == " SUCCESS_REQUEST "  ydb_query_data == " test2 " 
            log.logger.info ( ' Escenario: {} aserción exitosa ' .formato (nombre_casa))
         excepto AssertionError: 
            err_msg = ' Escenario: {0} la aserción de la interfaz falló, la interfaz devuelve el resultado: {1}! = Resultados de la consulta de la base de datos {2} ' .format (case_name, api_res_data, db_query_data) 
            log.logger.error (err_msg) 
            pytest.fail (err_msg) 
        finalmente : 
            log.logger.info ( ' Escenario: {0} Verificación completada ' .format ( case_name)) 

    @ pytest.fixture () 
    def test_message_signatures_create_teardown (self, mysql_op):
        rendimiento 
        de impresión ( " delete nueva firma SMS " )
         # suave Borrar nuevo código de error 
        data_sql = "" " ACTUALIZACIÓN sms_center_uat.sms_global_sign SET t.VALID_STATUS t = 0 = 1 WHERE t.VALID_STATUS la t.sign_name Y = 'test2' "" " 
        mysql_op.execute_sql (data_sql)

 

Supongo que te gusta

Origin www.cnblogs.com/gcgc/p/12761912.html
Recomendado
Clasificación