今天在做接口测试的时候,有一个查询的接口,虽然执行完返回的数据是成功的,但是还是想要验证下数据的正确性,这就应用到了从mysql数据查询出数据,然后再与数据库查询的数据对比这样一个场景,因涉及到一小部分java代码,特此记录个简单的。
1.首先要下载mysql的驱动。可将mysql-connector-java-5.1.45-bin.jar包放到jmeter的lib目录下,重启jmeter,也可以直接在测试计划里在测试浏览添加。如图所示:
2.测试计划下新建个线程组,在线程组右键-->配置元件-->用户定义的变量,编写用于校验的值,这里我直接拿一个id做例子。
3.在线程组中右键,配置元件-->添加jdbc connection configuration,并配置连接参数。其中database_url = 'jdbc:mysql://*.*.*.*:3306/tenant?useUnicode=true&characterEncoding=utf8'
3.继续在线程组下添加sampler-----jdbc request,设置sql语句。
4.右键新建BeanShell PostProcessor,输入以下代码。
5.右键新建BeanShell 断言,输入以下代码。
6.添加【察看结果数】,如果数据不一致,提示如下:
如果数据一致,则是绿色通过图标。
遇到的问题:
在使用select语句在数据库查数据的时候,使用到jmeter中查询数据为空,后来经过排查,是因为select语句中含有中文字符的缘故,这是因为JDBC Request里面的sql语句包含了中文,jmeter识别不了。这就需要对它进行编码,才可以查询成功。解决办法:就是在JDBC 的连接中,增加useUnicode=true&characterEncoding=utf8这段代码