TestNG参数化测试Spring应用Dubbo接口
一、配置dubbo的Bean文件:
配置spring-dubbo.xml文件:
<dubbo:reference interface="com.datatrees.basisdata.bankbill.service.BillService" id="billService" url="dubbo://121.43.177.8:20100" timeout="10000"/>
将dubbo配置文件引入上下文spring-context.xml:
<import resource="spring-dubbo.xml" />

二、定义基础类:
@ContextConfiguration(locations = {"classpath:/spring-context.xml"})
@Configuration
public class BaseTestNGTest extends AbstractTestNGSpringContextTests {
// protected TestContextManager testContextManager;
// @BeforeTest
// public void setUpContext() throws Exception {
// this.testContextManager = new TestContextManager(getClass());
// this.testContextManager.prepareTestInstance(this);
// }
}
二、创建测试类,集成基础类:
1.excel参数化管理测试数据
2.excel管理sql数据
package com.tree.autotest.testcase.BillService; import com.datatrees.basisdata.bankbill.service.BillService;
import com.tree.autotest.BaseTestNGTest;
import com.tree.autotest.commons.CommonUtil_2;
import com.tree.autotest.commons.TestCase;
import com.tree.autotest.demo.ExcelHandle;
import com.tree.autotest.jdbc.DBIdConstant;
import com.tree.autotest.jdbc.ManagedSqlUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.testng.Assert;
import org.testng.annotations.*; import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* Created by lyh on 17/2/14.
*/
public class TestGetUserEmailNameCount2 extends BaseTestNGTest {
@Autowired
private BillService billService; private boolean handleOk;
private String insertSql1,insertSql2;
private static String excel;
private static Map allCases;
private Integer operatorUserId;
private Integer exceptedvalue;
private TestCase testcase; @BeforeClass
public void init() throws SQLException,IOException {
//获取excel用例列表
excel = "src/main/resources/case/BillService/TestGetUserEmailNameCount.xlsx";
allCases = CommonUtil_2.getAllCases(excel);
//获取用户ID
testcase = CommonUtil_2.getTestCaseBean(allCases, "case1", "case1-1");
operatorUserId = Integer.valueOf(testcase.param1);
//获取SQL
insertSql1 = testcase.stepSql;
insertSql2 = CommonUtil_2.getTestCaseBean(allCases, "case1", "case1-2").stepSql;
//删除,添加数据
handleOk &= deleteData(operatorUserId);
handleOk &= ManagedSqlUtil.insertBySql(insertSql1, DBIdConstant.MySql_Basisdata_ID);
handleOk &= ManagedSqlUtil.insertBySql(insertSql2, DBIdConstant.MySql_Basisdata_ID);
System.out.println("setUp方法执行"); } @DataProvider(name = "testdata")
public Object[][] dataprovide()throws IOException{
System.out.println("dataprovide方法执行");
// return new Object[][]{{2000020013,2},{2001000138,0},{2001000139,2}};
Object[][] testData =ExcelHandle.readXlsx(excel, "工作表2");
return testData;
} @Test(dataProvider="testdata")
public void test_case_1(HashMap<String, String> map) throws Exception { operatorUserId=Integer.valueOf(map.get("userId"));
exceptedvalue =Integer.valueOf(map.get("excepted")); //++++++++++++++实际值+++++++++++++
Integer actual_value =
billService.getUserEmailNameCount(operatorUserId); //预期值
// Integer excepted_value =get_excepted_value(operatorUserId);
//++++++++++++++验证+++++++++++++
Assert.assertEquals(actual_value,exceptedvalue); } @AfterClass
public void tearDown() { operatorUserId = Integer.valueOf(testcase.param1);
deleteData(operatorUserId);
System.out.println("tearDown方法执行");
} //定义数据清理
public boolean deleteData(Integer userId) {
String deleteSql1 = "delete from t_bill where UserId="+userId+";";
String deleteSql2 ="delete from t_user_email where userid="+userId+";";
handleOk &= ManagedSqlUtil.deleteBySql(deleteSql1, DBIdConstant.MySql_Basisdata_ID);
handleOk &= ManagedSqlUtil.deleteBySql(deleteSql2, DBIdConstant.MySql_Basisdata_ID); return handleOk;
}
public Integer get_excepted_value(Integer userId) throws SQLException{
String searchSql="select count(distinct(NameOnCard)) from t_bill where EmailId in (select distinct(EmailId) from t_user_email where UserId="+userId+")" +
" and NameOnCard != '';";
ResultSet rs =ManagedSqlUtil.selectBySql(searchSql,DBIdConstant.MySql_Basisdata_ID);
List<Integer> list = new ArrayList<Integer>();
while (rs.next()){
list.add(rs.getInt(1));
}
return list.get(0);
}
} 四、测试数据文件:
1.准备数据表格

2.测试执行参数表格:
表格:工作表2 中保存测试执行参数数据

五:运行结果:
出现:

TestNG参数化测试Spring应用Dubbo接口的更多相关文章
- Junit参数化测试Spring应用Dubbo接口
一.创建基础类. package com.tree.autotest; import org.junit.Before;import org.springframework.context.annot ...
- testng入门教程10 TestNG参数化测试
在TestNG的另一个有趣的功能是参数测试.在大多数情况下,你会遇到这样一个场景,业务逻辑需要一个巨大的不同数量的测试.参数测试,允许开发人员运行同样的测试,一遍又一遍使用不同的值. TestNG让你 ...
- Junit测试Spring应用Dubbo测试框架之-Excel 工具类
package com.tree.autotest.demo; import com.alibaba.fastjson.JSON;import org.apache.poi.hssf.usermode ...
- TestNG参数化测试
参数化有两种方法: 第一种:在xml文件中声明 第二种:用@DataProvider注解 先介绍第一种方法: ParameterTest类:用@Parameters({"name" ...
- TestNG参数化测试【转】
原文:http://www.yiibai.com/testng/20130916303.html 在TestNG的另一个有趣的功能是参数测试.在大多数情况下,你会遇到这样一个场景,业务逻辑需要一个巨大 ...
- TestNG参数化测试-数据提供程序 @DataProvider方式
在 testng.xml 中指定参数可能会有如下的不足: 1.如果你压根不用 testng.xml. 2.你需要传递复杂的参数,或者从Java中创建参数(复杂对象,对象从属性文件或者数据库中读取的et ...
- TestNG+Jenkins+Maven参数化测试dubbo接口
1.TestNG参数化测试用例: package com.tree.autotest.testcase.IUserBankSummaryService; import com.datatrees.fi ...
- jmeter测试dubbo接口
本文讲解jmeter测试dubbo接口的实现方式,文章以一个dubbo的接口为例子进行讲解,该dubbo接口实现的功能为: 一:首先我们看服务端代码 代码架构为: 1:新建一个maven工程,pom文 ...
- Jmeter分布式测试dubbo接口2
上次我们将dubbo接口与jmeter集成起来,但是jmeter是由java实现的,本身有很多限制,无法实现高并发,我们需要借助分布式来实现大压力测试. 在上次的例子中,我们只是实现了简单的dubbo ...
随机推荐
- nginx的http负载均衡
注意:nginx自带的http服务后端检测有缺陷,无法根据状态码来检测,建议使用tengine的nginx_upstream_check_module来实现后端服务的http健康状态检测 (1)负载均 ...
- ubuntu要安装新软件,已有deb安装包
如果ubuntu要安装新软件,已有deb安装包(例如:iptux.deb),但是无法登录到桌面环境.那该怎么安装?答案是:使用dpkg命令.dpkg命令常用格式如下:sudo dpkg -I iptu ...
- Java 中自定义时间格式
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date d = new Date(); String s ...
- Oracle常用常考集合
登陆远程服务器 sqlplus scott/tiger@192.168.2.1[:port]/sid [as sysdba] 简单查询 select table_name from user_tab ...
- 常见OJ提交结果对照表
Waiting:你的程序刚刚提交,正在等待OJ评测你的程序. Compiling:OJ正在编译你的程序. Accepted:OK!你的程序是正确的 ^_^. Wrong Answer:你的 ...
- ES5 的 Array
1: Array.isArray判断是否为数组 Array.isArray([1, 2, 3]); // true Array.isArray({foo: 123}); // false // Pol ...
- JZYZOJ1386 扑街 状压dp
http://172.20.6.3/Problem_Show.asp?id=1386 有一个W行H列的街道,需要用1*2小砖铺盖,小砖之间互相不能重叠,问有多少种不同的铺法? 数组f的不往后延伸指 ...
- 【数论】【莫比乌斯反演】【线性筛】bzoj2005 [Noi2010]能量采集
http://blog.csdn.net/Clove_unique/article/details/51089272 Key:1.连接平面上某个整点(a,b)到原点的线段上有gcd(a,b)个整点. ...
- [转] Log4j 配置 的webAppRootKey参数问题
在tomcat下部署两个或多个项目时,web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为“webapp.root”,如下:<!-- 应用路径 --> < ...
- 移动应用安全开发指南(Android)--数据存储
1.数据存储 概述 移动应用经常需要在某些场景下(比如用户登录)处理和用户或业务相关的敏感数据,有时候为满足某些业务需求,需要把这些敏感数据存储在本地,如果不对这些数据进行适当处理,就有可能存在敏感信 ...