• 如何使用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程序,如下:

    1. package com.mushishi;
    2. import org.testng.annotations.BeforeClass;
    3. import org.testng.annotations.Test;
    4. import org.openqa.selenium.WebDriver;
    5. import org.openqa.selenium.firefox.FirefoxDriver;
    6. public class NewTest {
    7. @Test
    8. public void f() {
    9. WebDriver driver;
    10. System.setProperty("webdriver.firefox.bin","E:\\Firefox\\firefox.exe");
    11. driver = new FirefoxDriver();
    12. driver.get("http://www.baidu.com");
    13. }
    14. }

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

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

    1. "1.0" encoding="UTF-8"?>
    2. <suite name="Suite" parallel="false">
    3. <test name="Test">
    4. <classes>
    5. <class name="com.mushishi.NewTest"/>
    6. classes>
    7. test>
    8. suite>

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

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

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project name="Demo" default="run" basedir=".">
    3. <echo message="import libs" />
    4. <path id="run.classpath">
    5. <fileset dir="${basedir}">
    6. <include name="lib/testng.jar" />
    7. <include name="lib/sikuli-script.jar" />
    8. </fileset>
    9. <fileset dir="${basedir}/lib/selenium">
    10. <include name="selenium-java-2.46.0.jar" />
    11. <include name="libs/*.jar" />
    12. </fileset>
    13. </path>
    14. <taskdef name="testng" classname="org.testng.TestNGAntTask" classpathref="run.classpath" />
    15. <target name="clean">
    16. <delete dir="build"/>
    17. </target>
    18. <target name="compile" depends="clean">
    19. <echo message="mkdir"/>
    20. <mkdir dir="build/classes"/>
    21. <javac srcdir="src" destdir="build/classes" debug="on" encoding="UTF-8" includeAntRuntime="false">
    22. <classpath refid="run.classpath"/>
    23. </javac>
    24. </target>
    25. <path id="runpath">
    26. <path refid="run.classpath"/>
    27. <pathelement location="build/classes"/>
    28. </path>
    29. <target name="run" depends="compile">
    30. <testng classpathref="runpath" outputDir="test-output">
    31. <xmlfileset dir="${basedir}" includes="testng.xml"/>
    32. <jvmarg value="-ea" />
    33. </testng>
    34. </target>
    35. </project>

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

    ” 这一行会报错,说没用还是什么的,这个我遇见的时候是因为我build path里面的包有问题,重引入一下,然后讲需要的包按照上面的文件路径引入就行了。

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

    六、jenkins的配置
    1、安装百度一下就行了,就一个命令

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

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

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

    文档获取方式:

    这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

    以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

  • 相关阅读:
    一文速学-时间序列分析算法之指数平滑法详解+Python代码实现
    41.【Java (基础入门-----三种结构体)】
    为何在网络上很难赚到钱?网络副业赚钱真的很难做吗?
    Spring AOP
    【JUC】AQS源码剖析
    1000道最新高频Java面试题,覆盖25个技术栈,从底层原理到架构
    Python中pip在cmd命令行下无法使用的解决方案
    第12期 | GPTSecurity周报
    Javaweb之javascript的详细解析
    华清远见11.3
  • 原文地址:https://blog.csdn.net/2301_77645834/article/details/133501261