JMeter - Run a python script before calling each HTTP request sampler

前端 未结 3 466
青春惊慌失措
青春惊慌失措 2021-02-10 15:56

I am new to Jmeter. My HTTP request sampler call looks like this

Path= /image/**image_id**/list/
Header =  \"Key\" : \"Key_Value\"

Key value is

3条回答
  •  傲寒
    傲寒 (楼主)
    2021-02-10 16:39

    I believe that Beanshell PreProcessor is what you're looking for.

    Example Beanshell code will look as follows:

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    
    Runtime r = Runtime.getRuntime();
    Process p = r.exec("/usr/bin/python /path/to/your/script.py");
    p.waitFor();
    BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = "";
    StringBuilder response = new StringBuilder();
    while ((line = b.readLine()) != null) {
        response.append(line);
    
    }
    
    b.close();
    vars.put("ID",response.toString());
    

    The code above will execute Python script and put it's response into ID variable.

    You will be able to refer it in your HTTP Request as /image/${ID}/list/

    See How to use BeanShell: JMeter's favorite built-in component guide for more information on Beanshell scripting in Apache JMeter and a kind of Beanshell cookbook.

    You can also put your request under Transaction Controller to exclude PreProcessor execution time from load report.

提交回复
热议问题