Java接口自动化测试之集成MyBatis和MySQL (五)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java接口自动化测试之集成MyBatis和MySQL (五),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6306字,纯文字阅读大概需要10分钟。
内容图文
pom.xml新增dependency
1 < dependency > 2 < groupId >org.mybatis</groupId> 3<artifactId>mybatis</artifactId> 4<version>3.4.4</version> 5</dependency> 6<dependency> 7<groupId>mysql</groupId> 8<artifactId>mysql-connector-java</artifactId> 9<version>5.1.6</version>10</dependency>
mybatis.xml
<? xml version="1.0" encoding="UTF-8" ?> <! DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > < configuration > <!-- 注册对象的空间命名 --> < environments default ="development" > < environment id ="development" > < transactionManager type ="JDBC" /> < dataSource type ="POOLED" > < property name ="driver" value ="com.mysql.jdbc.Driver" /> < property name ="url" value ="jdbc:mysql://localhost:3306/test" /> < property name ="username" value ="root" /> < property name ="password" value ="root" /> </ dataSource > </ environment > </ environments > <!-- 注册映射文件:java对象与数据库之间的xml文件路径! --> < mappers > < mapper resource ="mapper/SQLMapper.xml" /> </ mappers > </ configuration >
mapper文件SQLMapper.xml
<? xml version="1.0" encoding="UTF-8" ?> <! DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <!-- 命名空间mapper,如果有多个mapper文件,这个必须唯一 --> < mapper namespace ="com.testng.model" > < select id ="doGet" parameterType ="Integer" resultType ="com.testng.model.DoGetCase" > select * from dogetcase where id = #{id}; </ select > < select id ="doPost" parameterType ="Integer" resultType ="com.testng.model.DoPostCase" > select * from dopostcase where id = #{id}; </ select > </ mapper >
DoGetCase.java / DoPostCase.java 等JavaBean, 根据被测接口参数设计字段, 在MySQL中创建同样的表, 表字段也是根据被测接口的参数设计
1 package com.testng.model; 2 3 import lombok.Data; 4 5 @Data 6 public class DoGetCase { 7 private int id; 8 private String name; 9 private String password; 10 private String expected; 11 }
1 package com.testng.model; 2 3 import lombok.Data; 4 5 @Data 6 public class DoPostCase { 7 private int id; 8 private String name; 9 private String password; 10 private String expected; 11 }
公共类,连接数据用DatabaseUtil.java
1 package com.testng.utils; 2 3 import org.apache.ibatis.io.Resources; 4 import org.apache.ibatis.session.SqlSession; 5 import org.apache.ibatis.session.SqlSessionFactory; 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 7 8 import java.io.IOException; 9 import java.io.Reader; 10 11 public class DatabaseUtil { 12 public static SqlSession getSqlSession() throws IOException { 13// 获取配置的资源文件14 Reader reader = Resources.getResourceAsReader("mybatis.xml"); 15 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader); 16// sqlSession能够执行配置文件中的SQL语句17 SqlSession sqlSession = factory.openSession(); 18return sqlSession; 19 } 20 }
修改优化TestNG测试用例, 对于每个被测接口可以单独提取出来一个方法, 唯一的变量就是数据库用例的id编号, 这里就不演示了
1 package com.testng.cases; 2 3 import com.testng.model.DoGetCase; 4 import com.testng.utils.DatabaseUtil; 5 import com.testng.utils.HttpUtils; 6 import com.testng.utils.ReadConfig; 7 import org.apache.ibatis.session.SqlSession; 8 import org.testng.Assert; 9 import org.testng.Reporter; 10 import org.testng.annotations.Test; 11 12 import java.io.IOException; 13 14 public class DoGetTest { 15 16 @Test(description = "成功的案例") 17publicvoid getTest() throws IOException { 18 SqlSession session = DatabaseUtil.getSqlSession(); 19 DoGetCase doGetCase = session.selectOne("doGet", 1); 20 String uri = ReadConfig.URI + ReadConfig.GET_PATH1; 21 String param = "name=" + doGetCase.getName() + "&password=" + doGetCase.getPassword(); 22 String url = uri + param; 23 Reporter.log("请求地址" + url); 24 String result = HttpUtils.doGet(url); 25 Reporter.log("请求结果" + result); 26 Assert.assertEquals(result, doGetCase.getExpected()); 27 } 2829 @Test(description = "失败的案例") 30publicvoid getTest2() throws IOException { 31 SqlSession session = DatabaseUtil.getSqlSession(); 32 DoGetCase doGetCase = session.selectOne("doGet", 2); 33 String uri = ReadConfig.URI + ReadConfig.GET_PATH2; 34 String param = "name=" + doGetCase.getName() + "&password=" + doGetCase.getPassword(); 35 String url = uri + param; 36 Reporter.log("请求地址" + url); 37 String result = HttpUtils.doGet(url); 38 Reporter.log("请求结果" + result); 39 Assert.assertEquals(result, doGetCase.getExpected()); 40 } 41 }
1 package com.testng.cases; 2 3 import com.alibaba.fastjson.JSONObject; 4 import com.testng.model.DoPostCase; 5 import com.testng.utils.DatabaseUtil; 6 import com.testng.utils.HttpUtils; 7 import com.testng.utils.ReadConfig; 8 9 import org.apache.ibatis.session.SqlSession; 10 import org.testng.Assert; 11 import org.testng.Reporter; 12 import org.testng.annotations.Test; 13 14 import java.io.IOException; 15 16 public class DoPostTest { 17 18 @Test 19 public void postTest() throws IOException { 20 SqlSession session = DatabaseUtil.getSqlSession(); 21 DoPostCase doPostCase = session.selectOne("doPost", 1); 22 String url = ReadConfig.URI + ReadConfig.POST_PATH1; 23 Reporter.log("请求地址" + url); 24 JSONObject param = new JSONObject(); 25 param.put("name", doPostCase.getName()); 26 param.put("password", doPostCase.getPassword()); 27 Reporter.log("请求体" + param.toString()); 28 String result = HttpUtils.doPost(url, param.toString()); 29 Reporter.log("请求结果" + result); 30 Assert.assertEquals(result, doPostCase.getExpected()); 31 } 3233 @Test 34publicvoid postTest2() throws IOException { 35 SqlSession session = DatabaseUtil.getSqlSession(); 36 DoPostCase doPostCase = session.selectOne("doPost", 2); 37 String url = ReadConfig.URI + ReadConfig.POST_PATH2; 38 Reporter.log("请求地址" + url); 39 JSONObject param = new JSONObject(); 40 param.put("name", doPostCase.getName()); 41 param.put("password", doPostCase.getPassword()); 42 Reporter.log("请求体" + param.toString()); 43 String result = HttpUtils.doPost(url, param.toString()); 44 Reporter.log("请求结果" + result); 45 Assert.assertEquals(result, doPostCase.getExpected()); 46 } 4748 }
再次执行testng.xml, 得到的结果跟之前的效果一样. 这样设计的好处是测试用例可以用MySQL数据库管理起来
原文:https://www.cnblogs.com/andrew209/p/9164112.html
内容总结
以上是互联网集市为您收集整理的Java接口自动化测试之集成MyBatis和MySQL (五)全部内容,希望文章能够帮你解决Java接口自动化测试之集成MyBatis和MySQL (五)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。