如何在JMeter中运行Java代码并将vairables从java代码传递到Jmeter脚本

时间:2015-06-08 09:30:33

标签: jmeter

我正在通过添加Beanshell预处理器来阅读xlsx文件。当我在Eclispe中运行代码时,它运行正常。

但是当我在Jmeter中运行时,我的误差低于此值。我已经在Jmeter lib和lib \ ext中复制了所需的jar文件。

  

2015/06/08 14:53:04错误 - jmeter.util.BeanShellInterpreter:错误   调用bsh方法:eval

     

在文件中:内联评估:import java.io.File;进口   java.io.FileInputStream中; import java.io.IOException; 。 。 。 “”   在第18行第41栏遇到“=”.2015 / 06/08 14:53:04警告 -   jmeter.modifiers.BeanShellPreProcessor:BeanShell脚本中的问题   org.apache.jorphan.util.JMeterException:调用bsh方法时出错:   eval在文件中:内联评估:``import java.io.File;进口
  java.io.FileInputStream中; import java.io.IOException; 。 。 。 “”   在第18栏第41栏遇到“=”。“

import java.io.File;
import java.io.FileInputStream;

import java.io.IOException;
import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class url {

    public static void main(String[] args) throws IOException {

        FileInputStream file=new FileInputStream(new File("C:\\temp\\project.xlsx"));

        XSSFWorkbook workbook=new XSSFWorkbook(file);
        XSSFSheet sheet=workbook.getSheetAt(0);
        Iterator<Row>rowIterator=sheet.iterator();

        int count=1;
        while(rowIterator.hasNext()){
            Row row=rowIterator.next();
            Iterator<Cell> cellIterator=row.cellIterator();
            while(cellIterator.hasNext()){
                Cell cell=cellIterator.next();
                String TextInCell=cell.toString();
                String cellContent1="Cricket";
                String cellContent2="Football";
                String cellContent3="F1";
                String cellContent4="Badminton";
                String cellContent5="Misslenous";

                if(TextInCell.contains(cellContent1)){
                    String var=cell.getRichStringCellValue().toString();
                    String Category = cellContent1;

                }else if(TextInCell.contains(cellContent2)){
                    String var=cell.getRichStringCellValue().toString();
                    String Category = cellContent2;

                }else if(TextInCell.contains(cellContent3)){
                    String var=cell.getRichStringCellValue().toString();
                    String Category = cellContent3;

                }else if(TextInCell.contains(cellContent4)){

                    String var=cell.getRichStringCellValue().toString();
                    String Category = cellContent4;
                    System.out.println(var + "----"+Category );

                }else{
                    String var=cell.getRichStringCellValue().toString();
                    String Category = cellContent5;

                }

            }

        }

    }


}

1 个答案:

答案 0 :(得分:1)

  1. Beanshell不是很Java,你需要修改你的代码以符合Beanshell惯例:

    • 删除“class”和“main”方法
    • 从Iterator中删除
    • 从Iterator中删除
    • 显式转换对象,如Row row =(Row)rowIterator.next();
  2. Beanshell有众所周知的性能问题,如果您需要处理Excel文件,我建议使用JSR223 PreProcessor和“groovy”语言。要启用“groovy”支持download groovy-all.jar并将其放到JMeter安装的/ lib文件夹中
  3. 需要重新启动JMeter以获取常规或POI或任何罐子。
  4. 有关处理二进制文件的更多信息,请参阅How to Extract Data From Files With JMeter指南,希望您能获得一些线索。