如何使用jenkins、ant、selenium、testng搭建自动化测试框架

如果在你的理解中自动化测试就是在eclipse里面讲webdriver的包引入,然后写一些测试脚本,这就是你所说的自动化测试,其实这个还不能算是真正的自动化测试,你见过每次需要运行的时候还需要打开eclipse然后去选择运行文件吗?没有吧!应为那样真的是很low的!下面说一下经理的两种自动化测试:一、将脚本写好,放在服务器,通过定时任务去执行,这个是针对每天或者一些时间段需要执行的任务去做的,但是运用比较少,之前是用来定时检查线上所有的接口开发的一套系统。

进入正文,先说一下我们的思想:

1、使用eclipse 加上webdriver 把我们的脚本写好。

2、所有的脚本不可能放在同一个文件夹里面,有的需要执行多次,但是有的只需要一次,这个我们通过testng去实现,在我们的testng框架里面这个能够轻松实现,所以我们就将脚本中加如了testng。

3、testng虽然能够将脚本很好的规划好,但是他不能够自动运行,我们必须每次打开运行,比较麻烦,所以我们就想到了我们经常用到构建项目的jenkins,所以我们就需要在现在的框架上引入jenkins。

4、引入后,如何将他们结合下面来仔细说说

一、需要的工具、包

1、eclipse 这里必须把环境变量什么的都配置好。

2、selenium 的jar包

3、testng的jar包

二、项目和目录结构

1、使用eclipse创建一个项目,再在src下创建包,最后在下面创建一个testng的类,或者一个普通的带main函数类(都一步到位,直接用testng)

2、在工程同一个目录下面创建一个文件夹lib,在lib文件夹下创建一个selenium文件夹,再在selenium文件夹下创建一个libs文件夹

3、在eclipse中src的同一个目录,创建testng.xml文件和一个build.xml文件

目录结构如下图:

三、jar包的引入

首先上面的弄好了,我们先不管,现在是需要将selenium的包和testng的包引入到工程里来,不然没法用,先将下好的各个jar包依次放入之前创建的文件夹中,放入后在build path中去引入。记住testng的jar包在工程中我是引入了的。

四、测试类的编写以及testng.xml的编写

1、在包下面创建的测试类,写一个简单的selenium程序,如下:

python 复制代码
package com.mushishi;

import org.testng.annotations.BeforeClass;

import org.testng.annotations.Test;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

public class NewTest {

  @Test

  public void f() {

      WebDriver driver;

      System.setProperty("webdriver.firefox.bin","E:\\Firefox\\firefox.exe");

      driver = new FirefoxDriver();

      driver.get("http://www.baidu.com");

  }

}

自己可以先一步一步调试程序对不对。

2、testng.xml文件里面其实放的就是一个执行任务,最简单的就是我下面这样,如果你要加入逻辑执行,你后面再去研究,都支持的。直接贴testng代码

python 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
  <test name="Test">
    <classes>
    <!-- 下面这个name是你自己包名字然后.你的类名 -->
      <class name="com.mushishi.NewTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

testng里面的格式就是固定的,只需要将自己的包名字和类名字替换上就行了。把这些弄好了你执行一下这个testng,看能否正常执行上面的测试脚本,如果没有需要找找原因。

五、build.xml文件的编写

build.xml其实就是控制testng.xml去执行脚本,这里我们直接把我的xml代码贴出来。

python 复制代码
 
<?xml version="1.0" encoding="UTF-8"?>
<project name="Demo" default="run" basedir=".">
    <echo  message="import libs" />
    <path id="run.classpath">
        <fileset dir="${basedir}">
            <include name="lib/testng.jar" />
            <include name="lib/sikuli-script.jar" />
        </fileset>
        <fileset dir="${basedir}/lib/selenium">
            <include name="selenium-java-2.46.0.jar" />
            <include name="libs/*.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" includeAntRuntime="false">
            <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">
            <xmlfileset dir="${basedir}" includes="testng.xml"/>
            <jvmarg value="-ea" />
        </testng>
    </target>
</project>

上面的xml代码不用更改,直接可以用,如果有的人的代码"

<taskdef name="testng" classname="org.testng.TestNGAntTask" classpathref="run.classpath" />" 这一行会报错,说没用还是什么的,这个我遇见的时候是因为我build path里面的包有问题,重引入一下,然后讲需要的包按照上面的文件路径引入就行了。

到目前位置环境大部分好了,可以在cmd命令模式下切换到工程所在目录,直接运行ant命令就行,看是否报错,如果不抱错,会直接启动浏览器。

六、jenkins的配置

1、安装百度一下就行了,就一个命令

2、完成后在创建任务页面选择创建任务->输入项目的名字->选择的时候选择"构建一个自由风格的软件项目"->"构建"->在构建里面输入下面图片信息。build file是你工程的目录,如果是基础服务,其他的不用管了,然后保存。

3、现在可以直接运行了。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
蓁蓁啊36 分钟前
GIT使用SSH 多账户配置
运维·git·ssh
程序猿小三3 小时前
Linux下基于关键词文件搜索
linux·运维·服务器
虚拟指尖4 小时前
Ubuntu编译安装COLMAP【实测编译成功】
linux·运维·ubuntu
椎4955 小时前
苍穹外卖前端nginx错误之一解决
运维·前端·nginx
刘某的Cloud5 小时前
parted磁盘管理
linux·运维·系统·parted
极验5 小时前
iPhone17实体卡槽消失?eSIM 普及下的安全挑战与应对
大数据·运维·安全
爱倒腾的老唐5 小时前
24、Linux 路由管理
linux·运维·网络
程序员Aries5 小时前
自定义网络协议与序列化/反序列化
linux·网络·c++·网络协议·程序人生
yannan201903135 小时前
Docker容器
运维·docker·容器
_清浅5 小时前
计算机网络【第六章-应用层】
运维·服务器·计算机网络