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

devtools/2024/11/13 9:17:11/

如果在你的理解中自动化测试就是在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程序,如下:

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 {@Testpublic 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代码

<?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代码贴出来。

 
<?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,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

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

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


http://www.ppmy.cn/devtools/5290.html

相关文章

《ElementPlus 与 ElementUI 差异集合》el-popconfirm 气泡确认框之插槽写法有差异

ElementUI 直接在 el-button 上配置属性 slot&#xff1b; <el-popconfirm title"确定删除吗&#xff1f;请谨慎操作&#xff01;" confirm"delete"><el-button slot"reference" size"small" type"danger">删…

javase__进阶 day13stream流和方法引用

1.不可变集合 1.1 什么是不可变集合 ​ 是一个长度不可变&#xff0c;内容也无法修改的集合 1.2 使用场景 ​ 如果某个数据不能被修改&#xff0c;把它防御性地拷贝到不可变集合中是个很好的实践。 ​ 当集合对象被不可信的库调用时&#xff0c;不可变形式是安全的。 简单…

网卡接收数据的关键过程

网卡接收数据的关键过程 网卡中断处理网络软中断处理协议栈处理传输层处理 Linux内核tracers的实现原理与应用 前年ftrace for io /去年ftrace for mm/今年ftrace for network.今年ftrace也被深度定制加强。 在这篇文章中,我们将深入探讨网卡接收数据的完整过程,了解数据是如何…

react v18 项目初始化

按照以下命令进行傻瓜式操作即可&#xff1a; 全局安装脚手架工具&#xff1a; npm install -g create-react-app创建项目my-react-app&#xff1a; create-react-app my-react-app安装 antd: yarn add antd安装 react-router-dom&#xff1a; yarn add react-router-dom启动项…

基于springboot的高校学科竞赛平台源码数据库

基于springboot的高校学科竞赛平台源码数据库 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了高校学科竞赛平台的开发全过程。通过分析高校学科竞赛平台管理的不足&#xff0c;创建了一个计算机管理高校学科…

RK3588 linux 修改ulimit 配置

前言 ulimit 主要是用来限制进程对资源的使用情况的&#xff0c;它支持各种类型的限制&#xff0c;常用的有&#xff1a; 内核文件的大小限制进程数据块的大小限制Shell进程创建文件大小限制可加锁内存大小限制常驻内存集的大小限制打开文件句柄数限制分配堆栈的最大大小限制C…

Python 中整洁的并行输出

原文&#xff1a;https://bernsteinbear.com/blog/python-parallel-output/ 代码&#xff1a;https://gist.github.com/tekknolagi/4bee494a6e4483e4d849559ba53d067b Python 并行输出 使用进程和锁并行输出多个任务的状态。 注&#xff1a;以下代码在linux下可用&#xff0c…

electron打包Vue前端(修正版)

electron打包部署到本地问题 前提条件&#xff1a;部署一个单机应用&#xff0c;前后端都放置在本地&#xff01;&#xff01;&#xff01; 根据 electron打包Vue前端 教程打包后运行错误分析 1. 账号密码无法正确显示 位置 src/views/login.vue 表单 loginForm: {userna…