模拟多用户多场景:
1.多用户:SetUp线程组设置循环;新建csv存储用户和密码;正则表达式提取cookie;JSR223后置处理程序存cookie至本地
FileOutputStream fs = new FileOutputStream("D://software/apache-jmeter-5.5/extras_file/cookie.csv",true); OutputStreamWriter osw = new OutputStreamWriter(fs); BufferedWriter bw =new BufferedWriter(osw); bw.append("${__P(cookie,)}\n"); bw.close(); osw.close(); fs.close();
2.多场景:设置csv读取cookie文件;设置http信息头管理保存${cookie}
3.执行完后tearDown线程组-JSR223删除cookie文件
String filename="C:\\Users\\Desktop\\cookie.txt"; File file=new File(filename); if(file.exists()){ file.delete(); }
4.响应断言(断言必须放在请求子文件下,否则获取不到断言结果)
5.post请求中参数(密码加密)若不想被转义,将参数直接放在消息体中
6.jsr223-groovy和Beanshell处理器
- Groovy:如果不定义类,可以直接使用
log
;如果定义了类,则需要手动设置日志记录器。import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Rsa {
private static final Logger log = LoggerFactory.getLogger(Rsa.class)
public String encrypt(){
...
log.info("encrypted Text: " + encryptString);
return encryptString;
}
}
Rsa a=new Rsa();
String password = a.encrypt();
vars.put("password",password); - BeanShell:无论是否定义类,都可以直接使用
log
对象,因为BeanShell运行在包含这些预定义变量的上下文中。