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)