Selenium+TestNG Web自动化测试环境搭建9_ANT自动化执行以及testNG报告优化

1)利用ANT来自动化执行测试用例,并优化testNG报告

TestNG有三种运行测试用例的方式:

  1、使用testng.xml文件

  2、使用ant

  3、使用命令行的方式

这里介绍下前两种方式。


下载testNG-xslt(用于优化testNG报告):

1. 下载地址:http://www.antepedia.com/detail/p/testng-xslt.html
2. 解压后把saxon-8.7.jar放到project的libs目录下
3. 然后再把testng-results.xsl 放到工程的test-output 目录下


安装ANT:

下载地址:http://ant.apache.org/

下载1.9.7后, 解压到某个目录;

添加环境变量ANT_HOME,在系统变量PATH里面添加%ANT_HOME%\bin;

根据需要,下载相关jar包,放到lib里面。


配置ANT:

生成build.xml 和testng.xml(方法见本文附录);

配置testng.xml:

这里,按class来批量跑case。testNG还可以按包(package)和组(group)来跑case。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="classes">
  <test name="Test">
    <classes>
      <class name="common.ScreenShort"/>
      <class name="testBD.TestHighlight"/>
      <class name="testBD.A123"/>
      <class name="testBD.testBD"/>
      <class name="common.InitialDriver"/>
      <class name="testBD.test1"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

说明:配置好testng.xml后,我们直接右键testng.xml, Run As --->TestNG Suit 即可按所配置的来批量跑cases。

配置build.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- WARNING: Eclipse auto-generated file.
              Any modifications will be overwritten.
              To include a user specific buildfile here, simply create one in the same
              directory with the processing instruction <?eclipse.ant.import?>
              as the first entry and export the buildfile again. -->
<project basedir="." default="build" name="webTest">
	<property environment="env"/>
	<property name="AntHome" value="C:\Tools\apache-ant-1.9.7"/>
	<property name="ECLIPSE_HOME" value="C:/Tools/eclipse-luna-with-plugin/eclipse/"/>
	<property name="debuglevel" value="source,lines,vars"/>
	<property name="target" value="1.7"/>
	<property name="source" value="1.7"/>
	<path id="AntHome.classpath">
<span style="color:#ff0000;">		<fileset dir="${AntHome}/lib/">
			<include name="*.jar"/>
		</fileset></span>
	</path>
	<target name="init">
		<mkdir dir="target/test-classes"/>
		<mkdir dir="target/classes"/>
		<copy includeemptydirs="false" todir="target/test-classes">
			<fileset dir="src/test/java">
				<exclude name="**/*.java"/>
			</fileset>
		</copy>
		<copy includeemptydirs="false" todir="target/classes">
			<fileset dir="src/main/java">
				<exclude name="**/*.java"/>
			</fileset>
		</copy>
	</target>
	<target name="clean">
		<delete dir="target/test-classes"/>
		<delete dir="target/classes"/>
	</target>
	<target depends="clean" name="cleanall"/>
	<target depends="build-subprojects,build-project" name="build"/>
	<target name="build-subprojects"/>
	<target depends="init" name="build-project">
		<echo message="${ant.project.name}: ${ant.file}"/>
		<javac debug="true" debuglevel="${debuglevel}" destdir="target/test-classes" includeantruntime="false" source="${source}" target="${target}" <span style="color:#ff0000;">encoding="UTF-8"</span>>
			<src path="src/test/java"/>
			<classpath refid="webTest.classpath"/>
		</javac>
		<javac debug="true" debuglevel="${debuglevel}" destdir="target/classes" includeantruntime="false" source="${source}" target="${target}" <span style="color:#ff0000;">encoding="UTF-8"</span>>
			<src path="src/main/java"/>
			<classpath refid="webTest.classpath"/>
		</javac>
	</target>
	<target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/>
	<target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler">
		<copy todir="${ant.library.dir}">
			<fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
		</copy>
		<unzip dest="${ant.library.dir}">
			<patternset includes="jdtCompilerAdapter.jar"/>
			<fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
		</unzip>
	</target>
	<target description="compile project with Eclipse compiler" name="build-eclipse-compiler">
		<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
		<antcall target="build"/>
	</target>
	<!-- Config for testng -->
	<taskdef name="testng" classname="org.testng.TestNGAntTask">
		<classpath>
			<pathelement location="${AntHome}/lib/testng/testng/6.8/testng-6.8.jar"/>
		</classpath>
	</taskdef>
	<!-- execute testng after compile, then generate report -->
<span style="color:#ff0000;">	<target name="Run">
		<!-- config testng -->
		<testng outputdir="${basedir}" useDefaultListeners="true">
			<!-- execute testcase follow testng.xml -->
			<classpath refid="webTest.classpath"/>
			<xmlfileset dir="." includes="testng.xml"/>
			<!-- generate report title -->
			<sysproperty key="org.uncommons.reportng.title" value="Test Automation"/>
			<sysproperty key="org.uncommons.reportng.escape-output" value="false"/>
		</testng>
	</target>
	<target name="transform">
		<xslt in="${basedir}/test-output/testng-results.xml" style="${basedir}/test-output/testng-results.xsl" out="${basedir}/test-output/xsltresult.html" processor="SaxonLiaison">
			<!-- you need to specify the directory here again -->
			<param name="testNgXslt.outputDir" expression="${basedir}/test-output/"/>
			<classpath refid="AntHome.classpath"/>
		</xslt>
	</target></span>
</project>
每个人的工程不一样,生成的build.xml会稍有差别。

强调一下以下几点:(自己根据生成的build.xml做的修改)

		<fileset dir="${AntHome}/lib/">
			<include name="*.jar"/>
		</fileset>
这个是说引入AntHome/lib路径下所有的jar文件;

在javac里面加encoding="UTF-8"是为了设置编码格式,因为要跑的case里面有中文字符;

还要在Eclipse里面设置UTF-8编码:右键build.xml, 选择Run As--->External Tools Configration...--->Common--->Encoding, 选择UTF-8,如下图:




TestNG报告的优化:

后面两个target就是testNG相关的了:

name="Run"这个target是为了跑testng.xml里面配置的class。

name="transfer"这个target是为了优化testNG的报告。

说明:这里把testng.xml配置到build.xml里面是为了让批量跑case和生成优化报告一次完成。

(你也可以不配置name="Run"这个target,执行的时候,先运行testng.xml完成case的批量执行,再运行build.xml完成报告的优化)


默认情况下,在工程的test-output目录,testNG会生成两种html的报告:index.html和emailable-report.html

比如之前的例子,执行完会有下面两种报告:


这两种报告都不够美观。

生成优化后的TestNG报告:

配置好build.xml后,右键, Run AS--->Ant Build。控制台可以看到以下输出:

.................

Run:
      [testng] Starting ChromeDriver (v2.9.248315) on port 17652
      [testng] [TestNG] Running:
      [testng]   H:\work\workspace\webTest\testng.xml
      [testng] ===============================================
      [testng] Suite
      [testng] Total tests run: 5, Failures: 1, Skips: 1
      [testng] ===============================================
      [testng] The tests failed.
BUILD SUCCESSFUL
Total time: 1 minute 8 seconds

有BUILD SUCCESSFUL说明执行成功。

(注意:本人执行的过程中会报各种classnotfound的错误, 那是因为相关jar包没有下载的原因,只要按提示下载相关jar包, 放到AntHome/lib下面即可)

来看优化后的报告:

根据build.xml的配置,在test-output下面会生成xsltresult.html,这个就是优化后的报告:

1)首先它带有Failed,Passed和Skipped的统计(图):


2)查看细节:

点击上图的左下方的Test,勾选Group by class:

会看到更详细的执行信息:Passed的方法会标绿;Failed的方法会标红;Skipped的方法会标黄;对于fail的case, 点击对应标红的信息即能看到fail的具体信息。

(点击Results overview 会切换到上面的统计图模式)



至此,就完成了testNG 用例的批量执行(配置testNG.xml)以及testNG报告的优化(结合Ant的build.xml)


附:利用Eclipse生成一些xml的方法

(网上很多做法都是自己去创建xml, 然后进行配置, 其实Eclipse都有生成这些xml的方法,小结如下)

TestNG:  Eclipse生成testng.xml: 在工程上右键,选择TestNG --->Convert to TestNG;

Maven:   Eclipse生成pom.xml: 在工程上右键,选择Configure ---> Convert to Maven Project;

Ant:         Eclipse生成build.xml: 在工程上右键,选择Export... ---> General ---> Ant Buildfiles;



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值