jenkins、ant、selenium、testng搭建自动化测试框架

news2024/10/6 14:29:54

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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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代码

<?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、骚年去运行吧。

Python接口自动化测试零基础入门到精通(2023最新版)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1136570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt布局 day11

Qt布局 day11 布局基本流程 布局管理器&#xff0c;可以管理widget&#xff0c;让他帮忙管理 1.创建好我们想要布局的widgets2.我们创建QBoxLayout对象将其小部件添加到布局中3.我们调用QWidget::setLayout()将QBoxLayout对象安装到小部件上4.布局中国的小部件将重新设置父类…

02 功能模块与技术选型

本专栏将从基础开始&#xff0c;循序渐进&#xff0c;以实战为线索&#xff0c;逐步深入SpringSecurity相关知识相关知识&#xff0c;打造完整的SpringSecurity学习步骤&#xff0c;提升工程化编码能力和思维能力&#xff0c;写出高质量代码。希望大家都能够从中有所收获&#…

PMP考试都是什么题型?

这里要讲一些关于新考纲的知识点&#xff0c;这些内容都会在考试中出现。为了快速作答&#xff0c;我们要抓住主要的点&#xff0c;优先回答自信的题目。 1、不需要全都答对180道题。 按照二八法则&#xff0c;只要能答对80%的题目&#xff0c;容错率大约是20%&#xff08;约…

亚马逊卖家必备:自养号测评如何帮助新店铺脱颖而出?

亚马逊是全球最大的电商平台之一&#xff0c;成为亚马逊新店铺的卖家是许多商家的梦想。然而&#xff0c;在一个庞大的市场中脱颖而出并吸引客户并不容易。所以&#xff0c;如何在亚马逊上成功推广新店铺呢?让我们来探讨一下&#xff0c;有哪些技巧可以帮助您实现这个目标。 …

UE5 C++自定义Http节点获得Header数据

一、新建C文件 选择All Classes&#xff0c;选择父类BlueprintFunctionLibrary&#xff0c;命名为SendHttpRequest。 添加Http支持 代理回调的参数使用DECLARE_DYNAMIC_DELEGATE_TwoParam定义&#xff0c;第一参数是代理类型&#xff0c;后面是参数1类型&#xff0c;参数1&…

2-Java进阶知识总结-2-递归-异常-流-File

文章目录 Java SE进阶知识总结-2Objects、Math、System、BigDecimalObjectsMathSystemBigDecimal 包装类基本数据类型对应的包装类自动拆箱和自动装箱包装类常见问题 时间类JDK8&#xff08;-&#xff09;JDK8&#xff08;&#xff09;日历类&#xff08;获取当前时间&#xff…

7年阿里测试经验之谈 —— 用UI自动化测试实现元素定位!

随着IT行业的发展&#xff0c;产品愈渐复杂&#xff0c;web端业务及流程更加繁琐&#xff0c;目前UI测试仅是针对单一页面&#xff0c;操作量大。为了满足多页面功能及流程的需求及节省工时&#xff0c;设计了这款UI 自动化测试程序。旨在提供接口&#xff0c;集成到蜗牛自动化…

BUUCTF 文件中的秘密 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 小明经常喜欢在文件中藏一些秘密。时间久了便忘记了&#xff0c;你能帮小明找到该文件中的秘密吗&#xff1f; 密文&#xff1a; 下载附件&#xff0c;解压得到JPEG图片。 解题思路&#xff1a; 1、根据题目提示…

预训练+微调 逆合成预测

【JCIM 2020】数据增强预训练基于模板 Template methods Figure 1. 预训练微调 workflow 首先&#xff0c;通过增强的反应数据&#xff08;真实存在的数据计算机生成的反应数据&#xff09;进行Pretrain Encoder A&#xff0c; 2、只使用真实反应数据对Pretrain Encoder A 进…

最小生成树专题1 最小生成树-Prim算法

题目&#xff1a; 样例1&#xff1a; 输入 4 5 0 1 3 0 2 2 0 3 3 2 3 1 1 2 1 输出 4 样例2&#xff1a; 输入 3 1 0 1 1 输出 -1 思路&#xff1a; Prim 算法和 朴素版的 Dijkstra 有点类似&#xff0c;也叫做 朴素版Prim算法&#xff0c;但也还是有点区别。 Dijkstra 中…

​CRM系统如何选型?

不少企业都想要使用CRM客户管理系统&#xff0c;但往往在CRM选型阶段就被折腾的五迷三道。CRM系统选型难在哪里&#xff1f;下面我们从企业用户和CRM厂商两方面进行分析&#xff0c;来说说关于CRM系统选型的那些事。 企业自身原因&#xff1a; 1、认知偏差 看到一个观点&…

GNN图神经网络入门

1.为什么会提出图神经网络&#xff1f; 答&#xff1a;为了处理图Graph这种特殊的数据结构。 2.为什么要与神经网络搭上关系&#xff1f; 答&#xff1a;利用神经网络能够拟合任意函数的能力&#xff08;或者理解为强大的为特征变换能力&#xff09;。 3.图神经网络的最终目的是…

Ajax、Json深入浅出,及原生Ajax及简化版Ajax

Ajax 1.路径介绍 1.1 JavaWeb中的路径 在JavaWeb中&#xff0c;路径分为相对路径和绝对路径两种&#xff1a; 相对路径&#xff1a; ./ 表示当前目录(可省略) ../ 表示当前文件所在目录的上一级目录 绝对路径&#xff1a; http://ip:port/工程名/资源路径 2.2 在JavaWeb中…

EG网关串口连接台达PLC

EG网关串口连接台达PLC 前言&#xff1a;台达PLC是一款国产优秀的可编程控制器&#xff0c;广泛应于工业控制领域&#xff0c;是一款性能高&#xff0c;运行稳定的控制器。此次我们要把台达DVP-ES系列PLC通过modbus驱动连接到EMCP物联网云平台&#xff08;简称EMCP&#xff09;…

一些额外且好用的 icon 图库

一些额外且好用的 icon 图库 之前偶然逛到 最佳 Icon 图标库推荐&#xff0c;收藏等于学会&#xff0c;这个真的挺好用的&#xff0c;不过这里的 icon 都是和 React 组件绑定了&#xff0c;额外补充一些不和框架绑定的图库 font awesome 这个应该用的人满多的&#xff0c;算…

基于springboot实现时间管理系统项目【项目源码+论文说明】

基于springboot实现时间管理系统演示 摘要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括时间管理系统的网络应用&#xff0c;在外国时间管理系统已经是很普遍的方式&#xff0c;不过国内的管理系统可能还处于起步阶段。时…

KNN 和 SVM 图片分类 任务 代码及细节分享

使用KNN (K-最近邻) 方法进行图像分类也是一个常见的选择。以下是 使用sklearn的KNeighborsClassifier进行图像分类的Python脚本&#xff1a; import os import cv2 import numpy as np import logging from sklearn.neighbors import KNeighborsClassifier from sklearn.met…

jdbc 中 Statement 不能避免注入式漏洞(SQL注入漏洞)

注入式漏洞 也称为 SQL注入漏洞&#xff0c;是一种常见的应用程序安全漏洞。当应用程序将用户输入的数据直接 拼接 到SQL查询语句中&#xff0c;而未对输入进行有效的过滤和转义时&#xff0c;攻击者可通过构造恶意的输入来执行非法的SQL语句&#xff0c;从而实现对应用程序的攻…

esp32c3-microPython开发固件烧录用户手册

esp32c3-microPython开发固件烧录用户手册1.4 文章目录 esp32c3-microPython开发固件烧录用户手册1.4烧录所需硬件软件工具Thonnyflash_download_tools 插座与USB转TTL模块之间接线esp32-C3版本插座&#xff08;底板4针&#xff09; 下载对应的 MicroPython固件烧录MicroPython…

grafana InfluxDB returned error: error reading influxDB 400错误解决

问题&#xff1a; 如图提示错误解决 确认自己的docker容器是否配置了以下3个字段 DOCKER_INFLUXDB_INIT_USERNAMExxx DOCKER_INFLUXDB_INIT_PASSWORDyyy DOCKER_INFLUXDB_INIT_ADMIN_TOKENzzz 如果有&#xff0c;在grafana中需要添加header配置Header: Authorization , Value…