Java接口自动化测试之集成MyBatis和MySQL (五)

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();
18         return 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 = "成功的案例")
17     public void 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     }
28
29     @Test(description = "失败的案例")
30     public void 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     }
32
33     @Test
34     public void 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     }
47
48 }

再次执行testng.xml, 得到的结果跟之前的效果一样. 这样设计的好处是测试用例可以用MySQL数据库管理起来

原文地址:https://www.cnblogs.com/andrew209/p/9164112.html

时间: 2024-08-12 14:12:13

Java接口自动化测试之集成MyBatis和MySQL (五)的相关文章

java 接口自动化测试之数据请求的简单封装

我们自己用java写接口自动化测试框架或者做个接口自动化测试平台的话,是需要自己进行相关的请求的,因此我们需要简单的封装下httpclient,我新建了一个http工具类,将get方法和post方法进行了一个简单的封装. 如果是开发的话,比如APP开发,无论是iOS还是Android,是需要将数据请求进行十分严密的封装的,因为需要对各种网络状态,请求状态做相应的判断处理,因为需要通过这些判断来做出相应的UI交互界面来给用户提示,那么我们做接口测试的话是不需要这么严密的,因为测试的前提就是要保证测

Java接口自动化测试之HTTPClient学习(四)

pom.xml  文件中dependency 1 <dependencies> 2 <dependency> 3 <groupId>org.testng</groupId> 4 <artifactId>testng</artifactId> 5 <version>6.14.3</version> 6 </dependency> 7 <dependency> 8 <groupId&g

Spring Boot(六)集成 MyBatis 操作 MySQL 8

一.简介 1.1 MyBatis介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC代码和手动设置参数以及获取结果集. 1.2 MyBatis发展史 MyBatis 原本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis ,2013年11月迁移到Github. ### 1.3 MyBatis和H

postman+newman+node.js+git+jenkins实现接口自动化持续集成

缺少的配图会在后期慢慢更新出来 1 首先我们来说说postman+newman+node.js+git+jenkins它们之间的关系.首先jenkins只支持命令行模式,包含win的和linux的.postman的命令行运行环境是newman,而newman又依赖于node.js. 2 以上软件都是开源的,大家百度一下很容易找到. jenkins 地址 https://jenkins.io/download/ 其中jenkins下载war包放入tomcat启动. 在配置上win环境和linux配

JAVA应用程序单独集成Mybatis使用Demo

参考博客:http://www.cnblogs.com/magialmoon/archive/2013/10/30/3397828.html 整体结构 POM依赖 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.3</version> </dependency> <depen

Jmeter+Ant+Jenkins接口自动化持续集成环境搭建(Linux)

一.安装说明 系统环境:CentOS release 6.4 JDK版本:jdk1.8.0_181 Jmeter版本:apache-jmeter-3.0 Ant版本:apache-ant-1.9.13 Jenkins版本:jenkins-war:2.138.1 二.安装JDK 将jdk-8u181-linux-i586.tar.gz解压后移动到指定目录,然后将以下内容加入/etc/profile文件内 1 #jdk 2 JAVA_HOME=/usr/java/jdk1.8.0_181 3 JRE

python WEB接口自动化测试之requests库详解

1.Get请求 前提: requests库是python的第三方库,需要提前安装哦,可以直接用pip命令:`python –m pip install requests` 按照惯例,先将requests库的属性打印出来,看看哪些属性. >>> import requests >>> dir(requests) #查看requests库的属性 ['ConnectionError', 'HTTPError', 'NullHandler', 'PreparedRequest'

接口自动化测试之TestNG测试报告ExtentReports的应用(三)

pom.xml导入包 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apach

Java 接口自动化系列--实体类之entity封装

实体包entity下面有4个类,主要存放java对象,每个类必须有私有属性,空参构造,get set方法 具体excel中数据信息见---工具类excel文章 1.API类 解析excel中接口信息的表头信息,需要定义参数变量,get set方法 @Excel是使用了easypoi对Excel进行读写,需要导入依赖 <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-annotat