一、pom.xml增加testng相关配置

<!--添加插件 关联testNg.xml-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.6</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<suiteXmlFiles>
<file>src/main/java/com/tree/autotest/testng.xml</file> <!--testsuite.xml文件类路径-->
</suiteXmlFiles>
<!--<workingDirectory>target/</workingDirectory>-->
<properties>
<property>
<name>usedefaultlisteners</name>
<value>false</value>
</property>
<property>
<name>listener</name>
<value>org.uncommons.reportng.HTMLReporter, org.uncommons.reportng.JUnitXMLReporter</value>
</property>
</properties>
<workingDirectory>target/</workingDirectory>
<forkMode>always</forkMode>
</configuration>
</plugin>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.4</version>
</dependency> <!-- 依赖reportNg 关联testNg-->
<dependency>
<groupId>org.uncommons</groupId>
<artifactId>reportng</artifactId>
<version>1.1.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
</exclusions>
</dependency> 二、脚本开发
1、编写一个基础类作为测试类父类。
@ContextConfiguration(locations = {"classpath:/spring-context.xml"})
@Configuration
public class BaseTestNGTest extends AbstractTestNGSpringContextTests {
}
2、编写测试类,继承父类
public class TestGetBankIdsOfNeedMoreBill extends BaseTestNGTest {
@Autowired
private IUserBankSummaryService iUserBankSummaryService; private boolean handleOk;
private String insertSql;
private static String excel;
private static Map allCases;
private Integer testuser;
private TestCase testcase; @BeforeMethod
public void setUp() throws SQLException {
//获取excel用例列表
handleOk = true;
testcase = CommonUtil_2.getTestCaseBean(allCases, "case1", "case1-1");
testuser = Integer.valueOf(testcase.param1);
//获取SQL
insertSql = testcase.stepSql;
//删除,添加数据
handleOk &= deleteData(testuser);
handleOk &= ManagedSqlUtil.insertBySql(insertSql, DBIdConstant.MySql_Basisdata_ID); System.out.println("----->> @BeforeClass is finished");
} @DataProvider(name = "testData")
private static Object[][] dataprovide()throws IOException {
excel="src/main/resources/case/IUserBankSummaryService/TestGetBankIdsOfNeedMoreBill.xlsx";
allCases = CommonUtil_2.getAllCases(excel);
System.out.println("dataprovide方法执行");
Object[][] testData = ExcelHandle.readXlsx(excel, "用例列表");
return testData;
} @Test(dataProvider="testData")
public void test_case_1(HashMap<String, String> map) throws Exception { testuser =Integer.valueOf(map.get("userid"));
//实际值:
List<Integer> actual_list = iUserBankSummaryService.getBankIdsOfNeedMoreBill(testuser);
//预期值:
List<Integer> excepted_list = get_excepted_list(testuser);
//验证:
System.out.println("userId值:"+testuser);
System.out.println("actual_list值:"+actual_list.toString());
System.out.println("excepted_list值:"+excepted_list.toString());
System.out.println("size值:"+excepted_list.size()); if (excepted_list.size()==0){
Assert.assertEquals(actual_list.toString(), "[]");
}else {
Assert.assertEquals(actual_list.toString(), excepted_list.toString());
}
System.out.println("----->> @Test is finished");
} @AfterMethod
public void tearDown() {
testuser = Integer.valueOf(testcase.param1);
handleOk &= deleteData(testuser);
System.out.println("----->> AfterClass is finished"); } //定义数据清理
public boolean deleteData(Integer userid) {
String deleteSql = "delete from t_user_bank_summary where userid = "+userid+";";
handleOk &= ManagedSqlUtil.deleteBySql(deleteSql, DBIdConstant.MySql_Basisdata_ID);
return handleOk;
}
//预期值 public List<Integer> get_excepted_list(Integer userid)throws SQLException{
String searchSql = " SELECT a.BankId " +
" FROM t_user_bank_summary a, (SELECT MAX(Id) mid " +
" FROM t_user_bank_summary " +
" WHERE UserId ="+userid+" " +
" GROUP BY BankId) t " +
" WHERE a.id = t.mid AND EffectiveBillCount12M<11";
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;
}
3、新建testsuite文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="1" name="Suite" parallel="tests">
<test name="demo">
<packages>
<package name="com.tree.autotest.testcase.IUserCustomerService"/>
<package name="com.tree.autotest.testcase.IVariableService"/>
<package name="com.tree.autotest.testcase.IUserBillService"/>
<package name="com.tree.autotest.testcase.IInsuranceBillService"/>
<package name="com.tree.autotest.testcase.IUserBankService"/>
<package name="com.tree.autotest.testcase.IUserBankSummaryService"/>
<package name="com.tree.autotest.testcase.ICustomerBackService"/>
</packages>
<classes>
<class name="com.tree.autotest.testcase.IUserBankService.TestSelectListByUserId"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite --> 4、直接执行testng.xml文件,运行成功的话,使用jenkins集成 三、Jenkins配置集成项目,使用HTML插件和TestNG插件解析报告
1、从git上得到测试项目文件


2、每天10点,15点构建测试


3、构建shell


4、HTML和TestNG report解析报告

5、构建完成后,点击HTML Report,展示结果






												

TestNG+ReportNG+IDEA+Git+Jenkins+surefire持续集成数据驱动dubbo接口测试的更多相关文章

  1. [python]Robotframework+Git+jenkins实现持续集成并生成测试报告发送邮件

    1.环境需求 &robotframework(不写搭建,自行百度) & git(不写安装,自行百度) &jenkins 2.安装jenkins 官网下载最新版本https:// ...

  2. Jenkins+maven+git+sonar 系统持续集成&amp;代码单測管理

    Jenkins+maven+git+sonar 系统持续集成&代码单測管理 Jenkins的安装 Jenkins是基于Java开发的一种持续集成工具,用于监控持续反复的工作.功能包含: 1.持 ...

  3. 【iOS】Jenkins Gitlab持续集成打包平台搭建

    Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...

  4. 使用jenkins构建持续集成平台

    jenkins +   Maven + svn/git + tomcat 的持续集成平台 项目管理流程: 需求分析----原型设计----开发代码----提交测试-----内部测试-----确认上线( ...

  5. RF+Jenkins构建持续集成

    引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成 ...

  6. jenkins+github持续集成中的坑

    1.前言 刚开始开发自己的独立博客的时候,每次发布都要手动打包,上传服务器,杀tomcat进程,重启,来回这么重复性工作,很快就有点不耐烦了.如果能自动化的东西,就绝不要手动了,所以自己搭建了个持续集 ...

  7. Jenkins的持续集成

    持续集成:不需要人工干预,持久化.重复的运行一个任务.将代码自动的更新到最新,然后自动运行. 新建项目之前要再Jenkins的全局工具配置里面把git的路径设置好.[全局工具配置]-->[Git ...

  8. jenkins+docker持续集成实验

    在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署.交付(CD).本文基于Jenkins+Docker+Git实现 ...

  9. docker+jenkins实现持续集成

    持续集成的概念我就不多说了,网上一大堆,今日主要讲讲怎么通过docker 和jenkins实现项目的持续集成.看着简单,网上完整教程很少,本人摸索很久才搞定!!! 一.首先安装docker.安装过程可 ...

随机推荐

  1. 图表绘制工具--Matplotlib 2

    ''' [课程3.] 基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主 同时可延展出多种其他图表样式 plt.plot(kind='line', ax=No ...

  2. BZOJ 1492 [NOI2007] - cash

    Description 最初你有 S 块钱, 有 N 天给你来兑换货币, 求最大获利. 一共只有两种货币 A , B . 对于每一天, 给定 3 个系数 A[i], B[i], Rate[i] A[i ...

  3. Codeforces Round #395 Div.2 题解

    感受 第一次参加CF的rating比赛,感觉还是非常exciting,前18分钟把AB切掉之后一直在考虑C题,结果最后还是没有想出来Orz 传送门 A 比较水的模拟,就是计算:\(\frac{z}{l ...

  4. masscan banners 不显示

    https://github.com/robertdavidgraham/masscan/issues/221

  5. kali 开启smb

    root@kali:~# smbpasswd -a rootNew SMB password:Retype new SMB password:root@kali:~# vi /etc/samba/sm ...

  6. error LNK2001: 无法解析的外部符号 "public: virtual long __stdcall CBaseFilter(转)

    原文转自 https://www.cnblogs.com/xiongjiaji/archive/2010/12/31/2476565.html 今天用VS2005编译DirectShow程序,发现出来 ...

  7. wget下载整个网站的方法

    转自: http://blog.itpub.net/29867/viewspace-716088/  (修改部分内容) wget --restrict-file-name=ascii -m -c -n ...

  8. do_exit——>exit_notify()【转】

    转自:http://blog.csdn.net/sunnybeike/article/details/6907322 版权声明:本文为博主原创文章,未经博主允许不得转载. /* * Send sign ...

  9. 2017网易---Fibonacci数列

    题目描述 Fibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacci数列就形如:0, 1, ...

  10. 集合类---List

    一.ArrayList详解 1.继承关系 public class ArrayList<E> extends AbstractList<E> implements List&l ...