自己主动化測试使用mybatis更新数据库信息实例
代码例如以下:
mybatis配置文件:
<? 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>
<properties resource="mybatis-config/jdbc.properties" />
<typeAliases>
<typeAlias alias="SupplierInfo" type="ec.qa.autotest.ui.dao.model.SupplierInfo" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mybatis-sqlmap/supplier.xml" />
</mappers>
</configuration>
JDBC配置文件:
##for mysql
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://db-XXXX:3306? useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true
jdbc.username=qa
jdbc.password=XXXXXX
供应商数据对象类:
package ec.qa.autotest.ui.dao.model; /**
*
* @author xin.wang
* 供应商信息
*
*/
public class SupplierInfo { private String email; private String supplier_id; private String company_name; private int logical_del; public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public String getSupplier_id() {
return supplier_id;
} public void setSupplier_id(String supplier_id) {
this.supplier_id = supplier_id;
} public String getCompany_name() {
return company_name;
} public void setCompany_name(String company_name) {
this.company_name = company_name;
} public int getLogical_del() {
return logical_del;
} public void setLogical_del(int logical_del) {
this.logical_del = logical_del;
}
}
DAO层接口
package ec.qa.autotest.ui.dao; import java.util.List; import ec.qa.autotest.ui.dao.model.SupplierInfo; public interface SupplierOperationDao { public SupplierInfo seletSupplierInfo(String emali); public List<SupplierInfo> seletSupplierInfo(List<String > emalis); public void updateSupplierInfo(SupplierInfo info); public void updateSupplierInfo(List<SupplierInfo > infos); public void logicDeleteSupplierInfo(String attr); }
Mybatis 的sql mapper 文件:
<?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 namespace="com.qa.autotest.ui.dao">
<select id="selectSupplierInfo" resultType="SupplierInfo">
select * from supplier.sup_supplier where email = #{email,jdbcType=VARCHAR} and logical_del = 0
</select> <update id="deleteSupplier">
update supplier.sup_supplier set logical_del = 1 where supplier_id =
#{supplier_id,jdbcType=VARCHAR}
</update> <update id="deleteSupplierInfo">
update supplier.sup_auth_info set logical_del = 1 where supplier_id =
#{supplier_id,jdbcType=VARCHAR}
</update> <update id="deleteSupplierInfoLog">
update supplier.sup_auth_info_log set logical_del = 1 where supplier_id =
#{supplier_id,jdbcType=VARCHAR}
</update> <update id="deleteSupplierLinkEffectiveness">
update supplier.sup_link_effectiveness set logical_del = 1 where email =
#{email,jdbcType=VARCHAR}
</update>
</mapper>
DAO实现类(注意加入pageobject标签,为用例自己主动注入此DAO实例):
package ec.qa.autotest.ui.dao.impl; import java.util.List; import org.apache.ibatis.session.SqlSession; import ec.qa.autotest.ui.dao.SupplierOperationDao;
import ec.qa.autotest.ui.dao.model.SupplierInfo;
import ec.qa.autotest.ui.framework.annotation.PageObject;
import ec.qa.autotest.ui.framework.init.InitMybatisSession; /**
* @author xin.wang 供应商数据库操作
*
*/
@PageObject
public class SupplierOpertaionDaoImpl implements SupplierOperationDao { private static SqlSession session; public SupplierInfo seletSupplierInfo(String emali) {
SupplierInfo si = null;
session = InitMybatisSession.getSessionFactory().openSession();
try {
si = session.selectOne("com.qa.autotest.ui.dao.selectSupplierInfo", emali);
session.commit();
} catch (Exception e) {
} finally {
session.close();
}
return si;
} public List<SupplierInfo> seletSupplierInfo(List<String> emalis) {
// TODO Auto-generated method stub
return null;
} public void updateSupplierInfo(SupplierInfo info) {
// TODO Auto-generated method stub } public void updateSupplierInfo(List<SupplierInfo> infos) {
// TODO Auto-generated method stub } public void logicDeleteSupplierInfo(String email) {
SupplierInfo si = null;
session = InitMybatisSession.getSessionFactory().openSession(false);
try {
si = session.selectOne("com.qa.autotest.ui.dao.selectSupplierInfo", email);
session.update("com.qa.autotest.ui.dao.deleteSupplier", si.getSupplier_id());
session.update("com.qa.autotest.ui.dao.deleteSupplierInfo", si.getSupplier_id());
session.update("com.qa.autotest.ui.dao.deleteSupplierInfoLog", si.getSupplier_id());
session.update("com.qa.autotest.ui.dao.deleteSupplierLinkEffectiveness", si.getEmail());
session.commit(true);
} catch (Exception e) {
session.rollback();
e.printStackTrace();
} finally {
session.close();
}
}
}
測试用比例如以下:
package ec.qa.autotest.ui.admin.portal.testcases; import org.testng.annotations.Test;
import ec.qa.autotest.ui.dao.impl.SupplierOpertaionDaoImpl;
import ec.qa.autotest.ui.framework.annotation.AutoInject;
import ec.qa.autotest.ui.testbase.AdminPortalTestBase; /**
*
* @auther xin.wang
*依据邮箱名逻辑删除SUPPLIER信息
*/
//@Listeners({ TestngRetryListener.class })
public class LoginAdminPortal extends AdminPortalTestBase{ @AutoInject
private SupplierOpertaionDaoImpl sd; @Test(invocationCount = 1)
public void loginAdminPortal() throws Exception{
sd.logicDeleteSupplierInfo("123456@qq.com");
}
}
自己主动化測试使用mybatis更新数据库信息实例的更多相关文章
- Selenium2 Python 自己主动化測试实战学习笔记(五)
7.1 自己主动化測试用例 无论是功能測试.性能測试和自己主动化測试时都须要编写測试用例,測试用例的好坏能准确的体现了測试人员的经验.能力以及对项目的深度理解. 7.1.1 手工測试用例与自己主动化測 ...
- Mock+Proxy在SDK项目的自己主动化測试实战
项目背景 广告SDK项目是为应用程序APP开发者提供移动广告平台接入的API程序集合,其形态就是一个植入宿主APP的jar包.提供的功能主要有以下几点: - 为APP请求广告内容 - 用户行为打点 - ...
- 【金阳光測试】大话Android自己主动化測试--Android自己主动化系列(1)--金阳光于2013年4月份
Android自己主动化測试框架和工具在四年多的发展日趋成熟. 从五年前的第一代自己主动化架构演进到眼下第四代(本系列讲座第7篇后将具体剖析第三代和第四代自己主动化框架)从曾经最早谷歌推崇的monke ...
- Android自己主动化測试解决方式
如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolect ...
- Android自己主动化測试之Monkeyrunner用法及实例
眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monke ...
- MAC中在eclipse luna上搭建移动平台自己主动化測试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录
这几天由于原来在用的hp laptop的电池坏掉了,机器一不小心就断电.所以仅仅能花时间在自己的mackbook pro上又一次搭建整套环境.大家都知道搭建好开发环境是个非常琐碎须要耐心的事情,特别是 ...
- 带有机器人框架的.NET自己主动化測试
Clayton Neal在软件測试和质量保证方面有超过13年的经验,当中有八年的Windows, web,和移动应用程序的測试自己主动化经验.他在測试领域的全部等级都工作过.近期他在Bloomberg ...
- Android Monkey自己主动化測试
前言 假设你做Android开发,还没有使用过Monkey进行測试,那么今天看到这篇文章,希望能解决你Android測试中的一些问题.起码能帮你省点測试的时间而且发现很多其它的问题. Monkey简单 ...
- iOS自己主动化測试的那些干货
前言 假设有測试大佬发现内容不正确.欢迎指正,我会及时改动. 大多数的iOS App(没有持续集成)迭代流程是这种 也就是说.測试是公布之前的最后一道关卡.假设bug不能在測试中发现,那么bug 就会 ...
随机推荐
- Java乐观锁实现之CAS操作
介绍CAS操作前,我们先简单看一下乐观锁 与 悲观锁这两个常见的锁概念. 悲观锁: 从Java多线程角度,存在着“可见性.原子性.有序性”三个问题,悲观锁就是假设在实际情况中存在着多线程对同一共享的竞 ...
- JDK源码(1.7) -- java.util.Arrays
java.util.Arrays 源码分析 ------------------------------------------------------------------------------ ...
- Codeforces Round #346 (Div. 2) C. Tanya and Toys 贪心
C. Tanya and Toys 题目连接: http://www.codeforces.com/contest/659/problem/C Description In Berland recen ...
- Java中应该返回零长度数组或空集合,而不是返回null(转)
说明:为了避免在数组和集合的获取上增加null的判断,同时也能减少不必要的空指针异常,通常会在业务返回零数组或空集合. 方法: 1.数组: 定义全局静态常量来减少内存开销:private static ...
- MySql清空表的方法介绍 : truncate table 表名
清空某个mysql表中所有内容 delete from 表名; truncate table 表名; 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate tabl ...
- Framebuffer重要结构体说明
l fb_var_screeninfo:记录了帧缓冲设备和指定显示模式的可修改记录.包括屏幕的分辨率,像素信息和一些时序变量 struct fb_var_screeninfo { __u32 xre ...
- 【转】C与CPP后缀的文件在编译时的区别
本文出处连接, by Ray FAN(ielnaf@qq.com) ...
- 牛客网java基础知识
1.java把表示范围大的数转换为表示范围小的数,需要强制类型转换. Java中,数据类型分为基本数据类型(或叫做原生类.内置类型)和引用数据类型.原生类型为基本数据类型int和布尔值可以相互转换吗? ...
- sql 语句之 case
case语句语法: --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN ...
- IDE的文件和代码模板
设置IDE的的模板,可以在创建文件的时候,自动产生模板内容,模板里可以 模板头设置: # -*- coding: utf- -*- """ --------------- ...