Cuando Jmeter está realizando una prueba de automatización de la interfaz, el mensaje de respuesta Unicode se transfiere al chino

El mensaje devuelto por Jmeter en el proceso de automatización de la interfaz es una cadena de uincode, lo que hace que el juicio de aserción de respuesta posterior sea imposible.

1. El mensaje devuelto por la interfaz es el código de serie uincode, y la afirmación no es fácil de juzgar en este momento, como se muestra en la figura.

{
    
    "code":0,"msg":"\u4ef7\u683c\u6570\u636e\u4e0d\u80fd\u4e3a\u7a7a\uff01","data":null,"info":""}

Inserte la descripción de la imagen aquí
2. Solución:

  • Agregue un postprocesador en el grupo de subprocesos BeanShell PostProcessor
    Inserte la descripción de la imagen aquí
  • Agregue el siguiente código a BeanShell PostProcessor
String s2=new String(prev.getResponseData(),"UTF-8");


//---------------一下步骤为转码过程---------------
        char aChar;
        int len= s2.length();
        StringBuffer outBuffer=new StringBuffer(len);
        for(int x =0; x <len;){
    
    
            aChar= s2.charAt(x++);
            if(aChar=='\\'){
    
    
                aChar= s2.charAt(x++);
                if(aChar=='u'){
    
    
                    int value =0;
                    for(int i=0;i<4;i++){
    
    
                        aChar= s2.charAt(x++);
                        switch(aChar){
    
    
                            case'0':
                            case'1':
                            case'2':
                            case'3':
                            case'4':
                            case'5':
                            case'6':
                            case'7':
                            case'8':
                            case'9':
                                value=(value <<4)+aChar-'0';
                                break;
                            case'a':
                            case'b':
                            case'c':
                            case'd':
                            case'e':
                            case'f':
                                value=(value <<4)+10+aChar-'a';
                                break;
                            case'A':
                            case'B':
                            case'C':
                            case'D':
                            case'E':
                            case'F':
                                value=(value <<4)+10+aChar-'A';
                                break;
                            default:
                                throw new IllegalArgumentException(
                                        "Malformed   \\uxxxx  encoding.");}}
                    outBuffer.append((char) value);}else{
    
    
                    if(aChar=='t')
                        aChar='\t';
                    else if(aChar=='r')
                    aChar='\r';
                    else if(aChar=='n')
                    aChar='\n';
                    else if(aChar=='f')
                    aChar='\f';
                    outBuffer.append(aChar);}}else
                outBuffer.append(aChar);}
//-----------------以上内容为转码过程---------------------------
//将转成中文的响应结果在查看结果树中显示


        prev.setResponseData(outBuffer.toString());



Supongo que te gusta

Origin blog.csdn.net/weixin_42760923/article/details/105976860
Recomendado
Clasificación