前言
SoapUI 可以支持JDBC和Script方式访问数据库,Script获取到数据库内容后可以支持和接口返回数据的比对,非常的灵活和准确
一、请求中添加Script断言
在Request的断言处点击加号图标,弹出的Add Assertion 中选择 Script Assertion,点击Add 按钮。
二、连接数据库脚本
1 import groovy.sql.Sql 2 import groovy.json.JsonSlurper 3 4 def JDBCURL ="jdbc:mysql://host:port/db" 5 def USERNAME = context.expand('${#Project#username}') 6 def PASSWORD = context.expand('${#Project#password}') 7 def JDBCDRIVER = "com.mysql.jdbc.Driver" 8 log.info(USERNAME) 9 log.info(PASSWORD) 10 11 //log.info(uid) 12 driver = Sql.newInstance(JDBCURL,USERNAME,PASSWORD,JDBCDRIVER) 13 14 //数据库查询结果 15 sql="SELECT * FROM `table` WHERE type = '1' AND name = 'Deals'" 16 def result = driver.rows(sql) 17 count = result.size() 18 log.info(count)
说明:
1、password及username等变量建议参数化,规避密码过期需要逐个修改的问题,可以在project层添加参数;
2、通过连接数据库,得到了满足查询条件的数据的条数
3、将数据库查询结果与接口结果进行对比,如果一致证明接口查询准确可靠,所以继续完善代码
三、获取接口返回信息并与数据库进行比对
1 //接口返回结果 2 content = context.expand('${Request 1#Response}') 3 def slurper = new JsonSlurper() 4 def re = slurper.parseText(content) 5 def size =re.sceneUserInfoList.uid.size() 6 log.info(size) 7 8 //验证数据库查询结果与接口返回结果一致 9 assert count == size
至此,我们可以验证数据库的结果与接口返回的结果数量一致,如果有更细致的校验,可以根据需要添加丰富的assert 内容
四、小结
Script连接数据库的优势在于数据库中数据的变动,对校验结果的影响可以规避到最小,并且脚本灵活方便,可以复用,效率相对较高。