O melhor em toda a rede, automação da interface Jmeter - leia a execução do caso de uso e grave os resultados (arranjo detalhado)


prefácio

1. Preparação do ambiente

Faça o download do pacote jar jxl.jar,
após o download, coloque-o no diretório lib no caminho de instalação do Jmeter,
a função do jxl.jar: concluir a leitura, escrita e modificação do Excel;

Análise de como usar o jmter para operar o excel:
① O Excell geralmente possui três elementos mais importantes: pasta de trabalho, planilha, célula
② Se você deseja armazenar o resultado em uma célula especificada, deve localizá-la de acordo com esses três elementos.
③Obtenha o nome do arquivo Excel primeiro ④Obtenha o
nome da
planilha .

2. Preparação da estrutura de dados de teste

Os dados preparados são os seguintes:
o arquivo de caso de teste é denominado user.csv,
o arquivo de dados de teste é denominado num.csv;

Nota: Crie um novo arquivo txt primeiro, depois mude a extensão do arquivo para csv, não crie um novo xls e depois mude para csv, senão o arquivo não será lido

①Crie um arquivo de caso de teste e importe-o para CSV Data Set Config, nomeie-o como test_case e defina os atributos relacionados (observe a parte circulada)

D1

D2

②Crie um arquivo de dados de teste e importe-o para CSV Data Set Config, nomeie-o test_data e escreva o nome da variável tel, pwd

D3

D4

③Crie um novo grupo de threads, crie uma solicitação de login http e passe os parâmetros relevantes

D5

④Crie um novo extrator de expressão regular para obter o resultado retornado pela solicitação http

D6

⑤ Preparação do código, depois de escrever o código, exporte o pacote jar e nomeie-o como CWResultFile.jar, coloque o pacote jar exportado no diretório lib-ext no diretório do caminho de instalação do Jmeter e lembre-se de reiniciar o Jmeter, caso contrário, não demorará efeito

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;
                }
    }

⑥ Adicione um código de chamada de amostrador beanshell e use o controlador apenas uma vez (porque apenas um arquivo Excel precisa ser exportado)

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

D10

⑦Crie outro código de chamada de amostrador beanshell, grave dados no arquivo 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

⑧Clique para executar, localize o arquivo de resultado do teste na unidade D

D13

⑨O arquivo de resultado do teste é o seguinte

D7

A seguir está o diagrama de sistema de arquitetura de conhecimento de aprendizado de engenheiro de teste de software mais completo em 2023 que eu compilei

1. Da entrada ao domínio da programação Python

Adicione uma descrição da imagem

2. Combate real do projeto de automação da interface

Adicione uma descrição da imagem

3. Combate Real do Projeto de Automação Web

Adicione uma descrição da imagem

4. Combate real do projeto de automação de aplicativos

Adicione uma descrição da imagem

5. Currículo de fabricantes de primeira linha

Adicione uma descrição da imagem

6. Testar e desenvolver o sistema DevOps

Adicione uma descrição da imagem

7. Ferramentas de teste automatizadas comumente usadas

Adicione uma descrição da imagem

Oito, teste de desempenho do JMeter

Adicione uma descrição da imagem

9. Resumo (pequena surpresa no final)

A luta é uma espécie de ardor interior, a força da persistência e a crença da busca. Deixe de lado a hesitação, abrace a bravura, supere o medo e abra suas asas. Não importa o quão esburacada seja a estrada à frente, acredite em suas próprias habilidades e siga em frente, e você acabará criando sua própria vida brilhante e brilhante!

Não importa como o mundo suba e desça, a coragem de alcançá-lo nunca desaparece. Carregando o sonho, superando obstáculos, como um cavalo galopando ao vento. Mesmo que o caminho seja difícil e perigoso, você deve seguir em frente com firmeza, acreditar em sua própria capacidade, perseguir a luz e iniciar uma brilhante viagem de vida!

Persevere e alcance o brilhantismo na luta, cada tentativa é uma oportunidade de progresso. Acenda o fogo em seu coração, vá além do limite, aceite o desafio e siga em frente com coragem. Somente acreditando em sua própria força e ousando correr riscos, você pode escrever seu próprio capítulo magnífico na vida!

Acho que você gosta

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