如何使用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、现在可以直接运行了。

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

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

相关推荐
FreeBuf_6 分钟前
SesameOp 恶意软件滥用 OpenAI Assistants API 实现与 C2 服务器的隐蔽通信
运维·服务器·网络
西游音月7 分钟前
(2)pytest+Selenium自动化测试-环境准备
selenium·测试工具·pytest
噜啦噜啦嘞好22 分钟前
Linux进程信号
linux·运维·服务器
REDcker1 小时前
Linux 进程资源占用分析指南
linux·运维·chrome
samroom1 小时前
Linux系统管理与常用命令详解
linux·运维·服务器
PKNLP1 小时前
07.docker介绍与常用命令
运维·docker·容器
Mxsoft6192 小时前
电力系统AR远程运维与数字孪生交互技术
运维·ar
一叶之秋14122 小时前
Linux基本指令
linux·运维·服务器
亚林瓜子2 小时前
在amazon linux 2023上面源码手动安装tesseract5.5.1
linux·运维·服务器·ocr·aws·ec2
FreeBuf_2 小时前
研究人员披露 Windows SMB 服务器权限提升漏洞(CVE-2025-58726)
运维·服务器·windows