Lo mejor en toda la red, automatización de la interfaz Jmeter: lea la ejecución del caso de uso y escriba los resultados (disposición detallada)


prefacio

1. Preparación del entorno

Descargue el paquete jar jxl.jar,
después de descargarlo, colóquelo en el directorio lib en la ruta de instalación de Jmeter,
la función de jxl.jar: complete la lectura, escritura y modificación de Excel;

Análisis de cómo usar jmter para operar Excel:
① Excell generalmente tiene tres elementos más importantes: libro de trabajo, hoja, celda
② Si desea almacenar el resultado en una celda específica, debe ubicarlo de acuerdo con estos tres elementos.
③Obtenga primero el nombre del archivo de Excel
④Obtenga el nombre de la hoja ⑤Obtenga
las coordenadas de la celda .

2. Preparación de la estructura de datos de prueba

Los datos preparados son los siguientes:
el archivo de caso de prueba se llama user.csv,
el archivo de datos de prueba se llama num.csv;

Nota: primero cree un nuevo archivo txt, luego cambie la extensión del archivo a csv, no cree un nuevo xls y luego cámbielo a csv, de lo contrario, el archivo no se leerá

①Cree un archivo de caso de prueba e impórtelo a CSV Data Set Config, asígnele el nombre test_case y establezca los atributos relacionados (tenga en cuenta la parte rodeada con un círculo)

D1

D2

②Cree un archivo de datos de prueba e impórtelo a CSV Data Set Config, asígnele el nombre test_data y escriba el nombre de la variable tel, pwd

D3

D4

③Cree un nuevo grupo de hilos, cree una solicitud de inicio de sesión http y pase los parámetros relevantes

D5

④Cree un nuevo extractor de expresiones regulares para obtener el resultado devuelto por la solicitud http

D6

⑤ Preparación del código, después de escribir el código, exporte el paquete jar y asígnele el nombre CWResultFile.jar, coloque el paquete jar exportado en el directorio lib–ext bajo el directorio de ruta de instalación de Jmeter y luego recuerde reiniciar Jmeter, de lo contrario no tomará efecto

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import jxl.Cell;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

/**导入jxl.jar;*后续扩充功能,sheet2增加测试报告展现;------待实现;*/
public class CWOutputFile {
    
    
    
    public static void main(String[] args) throws RowsExceededException, WriteException, BiffException, IOException{
    
    
        CWOutputFile t=new CWOutputFile();
        String File=t.cOutputFile("测试");
    }
    
    /** wOutputFile方法写结果文件* wOutputFile(文件路径,案例编号,测试验证点,预期结果,实际结果,错误码,状态码,响应结果)*/
    public void wOutputFile(String filepath, String caseNo,String testPoint, String preResult, String fresult, String errCode,String status, String respond) throws IOException,RowsExceededException, WriteException, BiffException 
            {
    
    
                File output = new File(filepath);
                String result = "";
                InputStream instream = new FileInputStream(filepath);
                Workbook readwb = Workbook.getWorkbook(instream);
                WritableWorkbook wbook = Workbook.createWorkbook(output, readwb); // 根据文件创建一个操作对象
                WritableSheet readsheet = wbook.getSheet(0);
                //int rsColumns = readsheet.getColumns(); //获取Sheet表中所包含的总列数
                int rsRows = readsheet.getRows(); 
                // 获取Sheet表中所包含的总行数
                /********************************字体样式设置 ****************************/
                WritableFont font = new WritableFont(WritableFont.createFont("宋体"), 10,WritableFont.NO_BOLD);// 字体样式
                WritableCellFormat wcf = new WritableCellFormat(font);
                /***********************************************************************/
                Cell cell1 = readsheet.getCell(0, rsRows);
                if (cell1.getContents().equals("")) {
    
    
                    Label labetest1 = new Label(0, rsRows, caseNo);// 第1列--案例编号;
                    Label labetest2 = new Label(1, rsRows, testPoint); // 第2列--验证测试点;
                    Label labetest3 = new Label(2, rsRows, preResult); // 第3列--预期结果;
                    Label labetest4 = new Label(3, rsRows, fresult);// 第4列--实际结果;
                    Label labetest5 = new Label(4, rsRows, errCode);// 第5列--错误码;
                    if (preResult == fresult) {
    
    
                        result = "通过";wcf.setBackground(Colour.BRIGHT_GREEN); // 通过案例标注绿色
                        } 
                    else {
    
    result = "不通过";wcf.setBackground(Colour.RED);// 不通过案例标注红色
                    }
                    Label labetest6 = new Label(5, rsRows, result, wcf); // 第6列--执行结果;
                    Label labetest7 = new Label(6, rsRows, status); // 第7列--状态码
                    Label labetest8 = new Label(7, rsRows, respond);// 第8列--响应结果
                    readsheet.addCell(labetest1);
                    readsheet.addCell(labetest2);
                    readsheet.addCell(labetest3);
                    readsheet.addCell(labetest4);
                    readsheet.addCell(labetest5);
                    readsheet.addCell(labetest6);
                    readsheet.addCell(labetest7);
                    readsheet.addCell(labetest8);
                    }
                wbook.write();
                wbook.close();
                }
    /** cOutputFile方法创建输出文件,传入参数为交易类型,如开户等;* cOutputFile方法返回文件路径,作为wOutputFile的入参;*/
    public String cOutputFile(String tradeType) 
            throws IOException, WriteException {
    
    
                String temp_str = "";
                Date dt = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
                temp_str = sdf.format(dt); // 获取时间戳// 相对路径默认为 apache-jmeter-3.1\bin
                String filepath = "D:\\\\"+tradeType+"_output_" + "_" + temp_str + ".xls"; // 以时间戳命名结果文件,确保唯一
                File output = new File(filepath);
                if (!output.isFile()) {
    
    
                    output.createNewFile(); // 如果指定文件不存在,则新建该文件
                    WritableWorkbook writeBook = Workbook.createWorkbook(output);
                    WritableSheet Sheet = writeBook.createSheet("输出结果", 0); // createSheet(sheet名称,第几个sheet)
                    WritableFont headfont = new WritableFont(WritableFont.createFont("宋体"), 11, WritableFont.BOLD); // 字体样式
                    WritableCellFormat headwcf = new WritableCellFormat(headfont);
                    headwcf.setBackground(Colour.GRAY_25); // 灰色颜色
                    Sheet.setColumnView(0, 11); // 设置列宽度setColumnView(列号,宽度)
                    Sheet.setColumnView(1, 30);
                    Sheet.setColumnView(2, 35);
                    Sheet.setColumnView(3, 35);
                    Sheet.setColumnView(4, 18);
                    Sheet.setColumnView(5, 11);
                    Sheet.setColumnView(6, 11);
                    Sheet.setColumnView(7, 50);
                    headwcf.setAlignment(Alignment.CENTRE); // 设置文字居中对齐方式;
                    headwcf.setVerticalAlignment(VerticalAlignment.CENTRE); // 设置垂直居中;
                    Label labe00 = new Label(0, 0, "案例编号", headwcf); // Label(列号,行号, 内容)
                    Label labe10 = new Label(1, 0, "验证测试点", headwcf);
                    Label labe20 = new Label(2, 0, "预期结果", headwcf);
                    Label labe30 = new Label(3, 0, "实际结果", headwcf);
                    Label labe40 = new Label(4, 0, "错误码", headwcf);
                    Label labe50 = new Label(5, 0, "执行结果", headwcf);
                    Label labe60 = new Label(6, 0, "返回状态", headwcf);
                    Label labe70 = new Label(7, 0, "响应结果", headwcf);
                    Sheet.addCell(labe00);
                    Sheet.addCell(labe10);
                    Sheet.addCell(labe20);
                    Sheet.addCell(labe30);
                    Sheet.addCell(labe40);
                    Sheet.addCell(labe50);
                    Sheet.addCell(labe60);
                    Sheet.addCell(labe70);
                    writeBook.write();
                    writeBook.close();
                    }
                return filepath;
                }
    }

⑥ Agregue un código de llamada de muestra de beanshell y use el controlador solo una vez (porque solo se necesita exportar un archivo de Excel)

t=new CWOutputFile();
String filepath=t.cOutputFile("测试");
vars.put("filepath",filepath);//转为jMeter变量,方便后期获取。

D10

⑦ Cree otro código de llamada de muestra de beanshell, escriba datos en el archivo de Excel

s=new CWOutputFile();
String testData="{"+"\"mobilephone\":\""+"${tel}\","+"\"pwd\":\""+"${pwd}\""+"}";
String preResult=vars.get("preResult");//用get方法可以确保获取到的是字符串,里面传递的是变量名,不需要用${变量名}这种方式咯!
String fresult=vars.get("fresult");
s.wOutputFile("${filepath}", "${caseNo}","${testPoint}",testData,preResult,fresult);

D11

⑧Haga clic para ejecutar, busque el archivo de resultados de la prueba en la unidad D

D13

⑨El archivo de resultados de la prueba es el siguiente

D7

El siguiente es el diagrama de sistema de arquitectura de conocimiento de aprendizaje de ingeniero de prueba de software más completo en 2023 que compilé

1. De la entrada al dominio de la programación en Python

Por favor agregue una descripción de la imagen

2. Proyecto de automatización de interfaz de combate real.

Por favor agregue una descripción de la imagen

3. Combate real del proyecto de automatización web

Por favor agregue una descripción de la imagen

4. Combate real del proyecto de automatización de aplicaciones

Por favor agregue una descripción de la imagen

5. Hoja de vida de los fabricantes de primer nivel

Por favor agregue una descripción de la imagen

6. Probar y desarrollar el sistema DevOps

Por favor agregue una descripción de la imagen

7. Herramientas de prueba automatizadas de uso común

Por favor agregue una descripción de la imagen

Ocho, prueba de rendimiento JMeter

Por favor agregue una descripción de la imagen

9. Resumen (pequeña sorpresa al final)

La lucha es una especie de ardor interior, la fuerza de la persistencia y la creencia de la búsqueda. Deja ir la vacilación, abraza la valentía, supera el miedo y extiende tus alas. No importa cuán accidentado sea el camino por delante, crea en sus propias habilidades y siga adelante, ¡y eventualmente creará su propia vida brillante y brillante!

No importa cómo suba y baje el mundo, el coraje para ponerse al día nunca se desvanece. Llevando el sueño, superando obstáculos, como un caballo galopando a través del viento. ¡Incluso si el camino es difícil y peligroso, debes avanzar con firmeza, creer en tu propia habilidad, perseguir la luz y comenzar un brillante viaje de vida!

Perseverar y alcanzar la brillantez en la lucha, cada intento es una oportunidad de progreso. Enciende el fuego en tu corazón, ve más allá del límite, acepta el desafío y avanza con valentía. ¡Solo creyendo en tu propia fuerza y ​​atreviéndote a correr riesgos puedes escribir tu propio capítulo magnífico en la vida!

Supongo que te gusta

Origin blog.csdn.net/csdnchengxi/article/details/131939928
Recomendado
Clasificación