java testng框架的windows自动化-自动运行testng程序上篇
本文旨在让读者简单了解testng的自动运行
怎么说呢,在网上已经有了各个前辈进行代码演示以及分享,我力争说到点子上
接上文,之前讲的大部分是juint的自动化代码运行,从未涉及到testng,但是在测试领域,如果使用java代码,一般都是juint或者testng,总得来说,我都用过,深深的感觉,确实testng比juint功能更加的强大,不过也没有说到了完全望尘莫及的程度,能用juint做的,testng也能做,能用testng做的,用juint也一定能做,只是比较累而已,,,testng的话我确实感觉到是juint的进化版本,就像是一个人多年使用juint并发现其中的问题,然后重新改写源码来做的新的框架,但是,修改之后的testng的问题也在于,由于代码注释和xml等比juint复杂得多,它的入门和使用的门槛,略高于juint,需要对java,ant等有一定了解。
https://blog.csdn.net/luozhuwang/article/details/14646839 这个博文对junit和testng做出了表面的比较,怎么说呢,说的很在理,但是测开有几个人只会juint和testng呢?其他的过河桥,可以使得两者的差异并不明显。不过我认为,读这样的文章很重要,可以有一个较为粗浅的认识
如果你看完了之前的博客,就会发现juint并不依赖于java编译,它往往会使用已经编译好的class文件来执行(当然,你也可以使用ant命令使得java文件编译为class),下图是我画的大概框图
总得来说这样的xml会直接在里面指定执行的东西的位置,再由执行的位置来定位执行的方法等等
但是我们不禁要想到以下问题
1,如果系统中要求只执行一部分代码,比如执行查询接口,或者只执行插入接口,如何去做
2,如何让每个class,甚至每个方法,按照一定的方式优先级来执行
3,方法的依赖问题,又该如何处理
4,如果需要一个或者多个变量(如cookie),如何在代码中传输,使得今天和明天使得都是能用的不同的参数
5,,,
以上问题都是在面试中面试人员问过我的,,,我一般都能说出来实现方式junit版本,不过估计不是他们想要的答案,说实话,都能解决,但是都比较的取巧吧,而且费劲
testng在这些方面都要做的更好,本文逐一演示,下面是testng的大概思路
testng和juint比较大的区别在于,它相当于又多了一个xml文件来管理,ant的build.xml只需要指定一个路径,然后不需要修改,而执行哪些方法和class,如何执行,完全由testng自身定义的一个xml来规定,在juint中,这一件事情完全由build.xml和配置文件来完成
首先下载好testng的包,并采用标准的非mvn结构把包放到lib文件夹之下,现在代码里面开一个zlr3的文件,他的目录结构以及运行效果是这样的(读了这么多我的博客,我相信各位一定已经不用再花一个博文的篇幅来介绍这些内容了,直接略过)
然后我new一个文件,可以叫做testNG.xml,与src同级目录,如图所示
里面写上如下代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="framework_testng">
<test verbose="2" name="TestGroups"> <classes>
<class name="zlr.zlr3" />
</classes>
</test>
</suite>
这个方法是直接运行整个class,其中name要指定要运行的class然后点击执行即可
这里是使用java自身的代码处理的效果,如果读者能做到这个程度,就可以开始尝试进行下一步操作,使用ant来执行
在自己的系统中再创建一个xml,比如叫做build.xml,然后在其中写下如下代码
<?xml version="1.0"?>
<project name="Demo" default="run" basedir=".">
<echo message="Start selenium Grid" />
<echo message="import libs" />
<path id="run.classpath">
<fileset dir="${basedir}">
<include name="lib/*.jar" />
</fileset>
</path>
<taskdef name="testng" classname="org.testng.TestNGAntTask" classpathref="run.classpath" />
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile" depends="clean">
<echo message="mkdir"/>
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes" debug="on" encoding="UTF-8">
<classpath refid="run.classpath"/>
</javac>
</target>
<path id="runpath">
<path refid="run.classpath"/>
<pathelement location="build/classes"/>
</path>
<target name="run" depends="compile">
<testng classpathref="runpath" outputDir="test-output"
haltonfailure="true"
useDefaultListeners="false">
<xmlfileset dir="${basedir}" includes="testNG.xml"/>
<jvmarg value="-Dfile.encoding=UTF-8" />
<sysproperty key="org.uncommons.reportng.title" value="AutoMation TestReport" />
</testng>
</target>
</project>
其中,笔者由于build.xml也在该工程下,所以 basedir=".",指的是当前目录
代码中分为clean->compile->run,其中lib/*.jar会把所有的jar都加载,而<xmlfileset dir="${basedir}" includes="testNG.xml"/>这一行需要指明
includes="testNG.xml"这样的参数来直接写出刚刚的xml直接调用,其中的打包啥的都可以修改路径,请自行摸索,下图是执行效果
可以看到,正确打印出了zlr,而且内容中也正常运行了代码,真的很不错
总得来说testng的代码,外面这个build.xml是不需要改动的,改动的只是代码中的xml,从这个xml中会指定运行的方法以及代码模块,这样的话代码上只需要对xml和java的代码这方面进行一系列讲解就好,虽然比junit代码更加的复杂一些,不过也还好,让程序员更专注的写xml,比如发邮件等工作会放在外面的xml中,而传参的代码写到里面的xml中,怎么说呢,虽然说得很费劲和绕,不过更加的各司其职,还好啦
至于如何自动运行ant程序,其实实际上和juint一样,有兴趣的读者可以从https://www.cnblogs.com/xuezhezlr/p/7725301.html这里看一下大概流程本文不做赘述
其中testng的代码结构又细分为多种,下一篇博客进行详细讲解,主要是说一下xml和一些相关的test文件目录
java testng框架的windows自动化-自动运行testng程序上篇的更多相关文章
- java testng框架的windows自动化-自动运行testng程序下篇
本文旨在让读者简单了解testng的自动运行 接上文https://www.cnblogs.com/xuezhezlr/p/9213456.html,文章大致把testng中比较特殊的两个xml形式说 ...
- java juint框架的windows自动化-自动运行juint程序简述
在京东混了一个月,基本有点稳定了,觉得也有所余力了现在,继续写博客吧,不过以后更新也许不是那么频繁了 本人使用的是juint框架,对开发是一个单元测试的java框架,但是对测试而言是java的基石之一 ...
- java的windows自动化-自动运行java程序
那么在一些工具齐全并且已经有了一定的写好的java程序的情况下(环境变量和软件见上一章http://www.cnblogs.com/xuezhezlr/p/7718273.html),如何自动化运行j ...
- Atitit.Java exe bat 作为windows系统服务程序运行
Atitit.Java exe bat 作为windows系统服务程序运行 1. 使用SC命令+srvany.exe (不错,推荐)+net start1 1.1. First 创建一个java的运 ...
- webstorm git 怎么断开版本控制 webstorm git for windows 禁止 自动运行
也是无语啊,今天装了下最新版本的webstorm , 发现特别卡,老动不动就卡死, 看了下进程, 牛X 啊, git for windows 一直蹭蹭蹭的疯狂增长,一开始的一点到后来的庞然大物. ...
- NanoPC-T4/RK3399开发板Ubuntu FriendlyCore系统开机自动运行客户程序
RK3399开机自动运行客户程序 比如hellohello.c 交叉编译:aarch64-linux-gcc hello.c -o hello使用SecureCRT软件通过串口下载到开发板rz修改文件 ...
- java的mac自动化-自动运行java程序
本文旨在帮助读者介绍,如果一个测试工程师拿到了mac本,该如何在本地自动运行java代码 首先如图所示写下如下一段代码 package zlr;import org.junit.Test;public ...
- mpush 服务端配置 for windows 服务自动运行
mpush 服务端配置 以下安装部分是参照官方的步骤, 一.安装jdk1.8并配置环境变量 示例: http://www.cnblogs.com/endv/p/6439860.html 二.Wind ...
- TestNG官方文档中文版(4)-运行TestNG
4 - 运行TestNG TestNG可以以不同的方式调用: * Command line * ant * Eclipse * IntelliJ's IDEA 1) 命令行 假 ...
随机推荐
- Web_0002:关于MongoDB的操作
1,启动moggdb服务端 打开cmd命令窗口进入到MongoDB的安装目录bin文件下: 如: cd /d F:\Program Files\mongodb\bin 执行如下命令(该命令窗口为 ...
- 使用lombok 注解Java类
环境信息: IDEA 2016.2.4 Maven 3 JDK 1.8 Maven工程配置: <properties> <lombok.version>1.16.16< ...
- 课程设计个人报告——基于ARM实验箱的捕鱼游戏的设计与实现
课程设计个人报告--基于ARM实验箱的捕鱼游戏的设计与实现 一.个人贡献 参与课设题目讨论及部分过程 资料收集 负责代码调试 捕鱼游戏相应功能的实现 实验环境 Eclipse软件开发环境: ARM实验 ...
- Oracle问题整合
1.安装Oracle和ado.net连接Oracle 在“环境变量”的“系统变量”中[必须添加]: ORACLE_HOME = C:\instantclient_11_2 TNS_ADMIN = C: ...
- S2-045漏洞初步分析
0x01 前言 前几天刚分析完s2-032这个漏洞,今天又爆发了一个s2-045的漏洞,又是直接的命令执行,影响了struts2绝大多数的版本. 官方给的漏洞公告在这里 https://cwiki ...
- linux下进入root用户登录
1.打开终端,输入sudo passwd -u root 输入当前用户的登录密码,提示如下标红区域信息 解决方案: 1)直接输入命令:su,输入当前用户登录密码 2)添加sudoers文件的写权限,命 ...
- 【3】学习C++之const关键字的使用
在C++中,const关键字是控制变量是否可以变化的,是否能够用好const关键字是区别小白和大佬的重要指标(大雾). 1.const与基本数据类型 ; //a是变量,a的值可以在后续操作中进行更改. ...
- 双目立体匹配——归一化互相关(NCC)
归一化相关性,normalization cross-correlation,因此简称NCC,下文中笔者将用NCC来代替这冗长的名称. NCC,顾名思义,就是用于归一化待匹配目标之间的相关程度,注意这 ...
- mina statemachine解读(二)
这里主要讲下对外接口暴露的处理. // 创建对外接口对象 TaskWork taskWork = new StateMachineProxyBuilder().setStateContextLooku ...
- 3D Slicer中文教程(七)—图像中值滤波
1.中值滤波概念 中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘 ...