你看看报错信息,应该提示你 sampler 没有 sampler() 这个方法,sampler 用的是 org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy 这个类的实例,可以查看 api 文档来知道它有什么方法
https://jmeter.apache.org/api/org/apache/jmeter/protocol/http/sampler/AccessLogSampler.html
021-03-29 20:11:16,702 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``sampler.sampler().getUrlAsString();'' : Error in method invocation: Method sampler() not found in class'org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy'
我在 5.4.1 版本试了一下,直接用 sampler.getPath() 就可以取到,如果要取整个 url,可以用 sampler.getUrl().toString()
日志权限不能把写日志目录的权限改一下解决吗?权限问题还通过代码解决?
可以先把包编译到 archive 目录,用 python 生成本地 apk 包的 http 地址的二维码,手机扫描就会提示下载,再安装
有两点疑问
1、抓取的时候还是要人工操作,抓取部分整理的接口,并不能覆盖到所有请求和元素
2、接口参数化的细节没有说明清楚,要怎么参数话才能覆盖全参数的各种组合?有些不能重复提交的接口数据又怎么参数化?
另外,原文好像在这里:
http://tmq.qq.com/2016/05/http_api_test/
#45 楼 @sunny_sun 是的
试试这个方法修改一下 yum 源
阿里云Linux安装软件镜像源
阿里云是最近新出的一个镜像源。得益与阿里云的高速发展,这么大的需求,肯定会推出自己的镜像源。
阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/
CentOS系统更换软件安装源
第一步:备份你的原镜像文件,以免出错后可以恢复。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
第二步:下载新的CentOS-Base.repo 到/etc/yum.repos.d/
CentOS 5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
第三步:运行yum makecache生成缓存
yum clean all
yum makecache
#33 楼 @ebuluo
测试脚本和测试用例,都在/data/loadtest/目录下,主要文件和作用说明如下:
.
├── genHTML.sh # 生成 HTML 文件脚本
├── index.html # 生成的 HTML 测试报告
├── jmeter.log #jmeter 执行生成的日志文件
├── loadtest.sh # 测试的主流程脚本
├── log # 存放执行日志的目录
├── monitor # 存放监控结果文件的目录
├── monitor.sh # 监控脚本
├── monitor.txt # 监控记录汇总
├── sendmail.py # 发送邮件脚本
├── serverlist # 监控服务器列表文件
├── style.css # 测试报告样式表
├── summary.txt # 测试汇总报告
├── testcase # 测试用例目录
└── testResult.txt # 测试结果临时文件
脚本执行流程:loadtest.sh ->monitor.sh-> genHTML.sh-> sendmail.py
#28 楼 @shadow000902 我是在 jmeter GUI 里编辑的,因为每个接口都要试跑一下,用这个还是挺方便的。当然我是直接把调试成功的接口另存为新的接口用例,再稍微修改一下地址和参数就行,编辑效率也不会特别低吧。想过做个 web 管理用例的界面,但是对前端技术不熟悉,短时间搞不定,这个也是后续可以搞的一个方向,如果搞好了从 web 页面编辑和执行测试用例,就是个自动化测试平台了吧
1、如果我在接口请求中进行了参数化,那这个用例导入测试服务器的话就没法用了,这个有什么办法处理呢?
参数化,照样可以用,如果你的参数化是文件的话,就用相对路径,比如你的脚本在/data/loadtest/testcase/xxx.jmx,参数文件也放到这个目录下,比如是 xxx.dat 调用的时候直接写 xxx.dat 就行
2、文件调用的时候会出错,请问下你的各个脚本文件是如何放置的?
文件路径是这样的:
脚本都放在/data/loadtest/
测试用例 testcase 目录也在这个目录下,所以用例目录的绝对路径是/data/loadtest/testcase/
#3 楼 @shadow000902
1、这里调用的 jmeter 测试用例是 jmeter 里导出的 jmx 文件么?
// 是的,用 jmeter GUI 生成的用例就行
2、要自动化执行的话,这些脚本是不是也有一个配置文件一样的来处理脚本的执行顺序?还是直接执行主流程脚本的 sh 就可以了?
// 直接执行主流程脚本就行,脚本会去搜索指定目录下的用例,在主流程脚本中指定。我这里是:/data/loadtest/testcase/
就是这个语句:
for i in `find ./testcase/ -name *.jmx|awk -F '.' '{print $2}'`
3、这个脚本是跑在一个单独的服务器上么?需要什么配置么?
// 是在单独机器上跑,系统环境是 centos 6.7 的,需要配置的环境就是设置 JDK 和安装 python
4、然后这个测试脚本的执行时间如何设置?还是按次数来跑?
// 脚本中设置的是跑 5 分钟,脚本中也做了判断,如果 5 分钟还没跑完会杀掉,不影响结果
我的 jmeter 设置是这样的