1. Jenkins本地执行测试 or 服务器端执行测试

测试代码计划通过jenkins执行时,通过网上查询各种教程,大多数为本地执行测试,由此可见,本地执行是大多数人的选择。

经过探讨,最终决定采用服务端执行测试。自动化测试代码上传到测试服务器,通过jenkins部署并执行,可减少本地资源占用。

2. 服务器端执行测试,需要的browser & webDriver

鉴于公司测试服务器为无界面的Linux系统,浏览器采用无界面的chrome。即,在服务器安装Headless Chrome。

webDriver选用chromeDriver对应版本。chromeDriver下载:http://npm.taobao.org/mirrors/chromedriver/

  1. ChromeOptions options = new ChromeOptions();
  2. options.setHeadless(true);
  3. return new ChromeDriver(options);

3. pom.xml配置

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5.  
  6. <groupId>com.hebg3</groupId>
  7. <artifactId>UITest</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <packaging>jar</packaging>
  10.  
  11. <name>UITest</name>
  12. <url>http://maven.apache.org</url>
  13. <profiles>
  14. <profile>
  15. <id>saveOrder</id>
  16. <build>
  17. <plugins>
  18. <!-- 测试运行器,用于运行测试用例 -->
  19. <plugin>
  20. <groupId>org.apache.maven.plugins</groupId>
  21. <artifactId>maven-surefire-plugin</artifactId>
  22. <version>2.19.1</version>
  23. <configuration>
  24. <suiteXmlFiles>
  25. <!-- 添加testng.xml文件,相当于run as testngSuite -->
  26. <suiteXmlFile>src/test/resources/saveOrder.xml</suiteXmlFile>
  27. </suiteXmlFiles>
  28. <source>${java.version}</source>
  29. <target>${java.version}</target>
  30. <showWarnings>true</showWarnings>
  31. </configuration>
  32. </plugin>
  33. <!-- 可执行jar插件 -->
  34. <plugin>
  35. <groupId>org.apache.maven.plugins</groupId>
  36. <artifactId>maven-jar-plugin</artifactId>
  37. <!-- 将src/test文件夹打成jar包 -->
  38. <executions>
  39. <execution>
  40. <goals>
  41. <goal>test-jar</goal>
  42. </goals>
  43. </execution>
  44. </executions>
  45. <!-- 打包配置 -->
  46. <configuration>
  47. <outputDirectory>${project.build.directory}</outputDirectory>
  48. <archive>
  49. <manifest>
  50. <addClasspath>true</addClasspath>
  51. <classpathPrefix>lib/</classpathPrefix>
  52. </manifest>
  53. <manifestEntries>
  54. <Class-Path>.</Class-Path>
  55. </manifestEntries>
  56. </archive>
  57. <!-- 打包时不包含以下格式的文件 -->
  58. <excludes>
  59. <exclude>**/*.xml</exclude>
  60. <exclude>**/*.properties</exclude>
  61. <exclude>**/*.csv</exclude>
  62. </excludes>
  63. </configuration>
  64. </plugin>
  65.  
  66. <!-- maven资源文件复制插件 -->
  67. <plugin>
  68. <groupId>org.apache.maven.plugins</groupId>
  69. <artifactId>maven-resources-plugin</artifactId>
  70. <version>3.1.0</version>
  71. <executions>
  72. <!-- 复制src/main/resources路径的文件 -->
  73. <execution>
  74. <id>copy-resources</id>
  75. <phase>validate</phase>
  76. <goals>
  77. <goal>copy-resources</goal>
  78. </goals>
  79. <configuration>
  80. <outputDirectory>${basedir}/target/src/main/resources</outputDirectory>
  81. <resources>
  82. <resource>
  83. <directory>${project.basedir}/src/main/resources</directory>
  84. <includes>
  85. <include>**/*.xml</include>
  86. <include>**/*.csv</include>
  87. <include>**/*.properties</include>
  88. </includes>
  89. <filtering>true</filtering>
  90. </resource>
  91. </resources>
  92. <encoding>UTF-8</encoding>
  93. </configuration>
  94. </execution>
  95. <!-- 复制src/test/resources路径的文件 -->
  96. <execution>
  97. <id>copy-test-resources</id>
  98. <!-- here the phase you need -->
  99. <phase>validate</phase>
  100. <goals>
  101. <goal>copy-resources</goal>
  102. </goals>
  103. <configuration>
  104. <outputDirectory>${basedir}/target/src/test/resources</outputDirectory>
  105. <resources>
  106. <resource>
  107. <directory>${project.basedir}/src/test/resources</directory>
  108. <includes>
  109. <include>**/*.xml</include>
  110. <include>**/*.csv</include>
  111. <include>**/*.properties</include>
  112. </includes>
  113. <filtering>true</filtering>
  114. </resource>
  115. </resources>
  116. <encoding>UTF-8</encoding>
  117. </configuration>
  118. </execution>
  119. </executions>
  120. </plugin>
  121. </plugins>
  122. </build>
  123. </profile>
  124. </profiles>
  125. <!-- 设置jdk版本与编码格式 -->
  126. <properties>
  127. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  128. <encoding>UTF-8</encoding>
  129. <java.version>1.8</java.version>
  130. <maven.compiler.source>1.8</maven.compiler.source>
  131. <maven.compiler.target>1.8</maven.compiler.target>
  132. </properties>
  133.  
  134. <dependencies>
  135. ……
  136. </dependencies>
  137. </project>

4. 打包命令

4.1 打包命令的执行

eclipse中右击项目名称 - 【Run As】-【Maven Build ...】,在goals处输入以下命令并运行;

4.2 打包:package -DskipTests=true -PsaveOrder

说明:-D跳过测试,直接打包,首先需要进行测试能否正常打包,之后再执行测试;

-P选择profile id(Line:15),不选择profile id会按默认执行,执行所有testng.xml,各插件版本也与设置的不同;

4.3 执行测试:test -PsaveOrder

4.4 配置jenkins:以上命令均能正常执行 -> 代码上传到git -> 运维大佬帮忙布置jenkins,jenkins执行的本质即,执行以上两条命令;

5. 多个testSuite的配置

当存在多个testng.xml文件,包含多个testSuite时,可以通过pom.xml设置多个profile来分别执行;

以上,Line14~123即为一个profile,可同时设置多个,根据不同情境,执行不同的profile;

我们目前的做法是:在部署jenkins项目时,输入profile id方可执行,实现了一个项目,多个测试情境按需使用;

6. 测试结果的查看

目前做法:在jenkins中添加了HTML Report、TestNG Results插件。

Java+Selenium 3.x 实现Web自动化 - Maven打包TestNG,利用jenkins执行测试的更多相关文章

  1. Java+Selenium 3.x 实现Web自动化 - 1.自动化准备

    (一)自动化准备 说明:本文主要记录了基于公司现有项目(一个电子商务平台),从0开始实现UI自动化的历程.从准备阶段,部分内容直接省略了基础知识,一切以最终做成自动化项目为目标,难免会有晦涩之处.文章 ...

  2. 《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)

    1.简介 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本.前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容, ...

  3. windiows下搭建python+selenium+unittest+Chrome的Web自动化环境

    一.selenium.unittest概念 Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测试,并且 ...

  4. requests库结合selenium库共同完成web自动化和爬虫工作

    我们日常工作中,单纯的HTTP请求,程序员都倾向于使用万能的python Requests库.但大多数场景下,我们的需求页面不是纯静态网页,网页加载过程中伴随有大量的JS文件参与页面的整个渲染过程,且 ...

  5. java web 使用maven打包绕过单元测试

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-suref ...

  6. 【jenkins】jenkins+maven+gitlab+testng,jenkins配置

    电脑版本:windows10企业版 jenkins配置: 1.general配置,这里的配置比较简单,基本默认就可以了 2.源码管理 2.1填写git地址,从你的gitlib项目里去找.不会的自行百度 ...

  7. maven 打包成 .jar 文件执行:没有主清单属性错误

    报错原因是pom.xml配置文件中没有指定main入口信息,在pom.xml文件中添加如下代码: <build> <plugins> <plugin> <gr ...

  8. MAVEN打包时跳过Junit测试

    我们知道,通常情况下使用maven package命令打包时,会自动执行test包下的各个单元测试. 这是因为spring-boot-maven-plugin插件已经集成了maven-surefire ...

  9. maven打包配置

    maven打包配置,到底要打包哪些文件,如何配置?? <build> <finalName>weatherAdminSys</finalName> <plug ...

随机推荐

  1. CentOS7开发环境搭建

    BIOS开启VT支持 查询笔记本进入BIOS的按键,启动BIOS的虚拟化设置 假设安装360卫士,那么请永久关闭Intel-VT核晶防护引擎 CentOS DNS配置 Linux 下设置DNS位置有3 ...

  2. jquery checkbox点选反选

    <script type="text/javascript"> $(function(){ //点选反选 $("#check_all").click ...

  3. Struts2框架学习笔记--strtus2初识

    struts2概述: 1.struts2框架应用于javaEE三层结构中的Web层框架 2.struts2框架是在struts1和webwork基础之上发展的全新框架(脱胎换骨 ,用法完全不一样)ps ...

  4. 截屏状态监听 - iOS

    既接到电话状态监听的需求之后再次添加了截屏状态的监听,当使用 App 时若用户执行截屏操作需要对当前状态进行监听操作,下面有两种方法,其中可以替换截屏的图片内容(Plan A),也可以弹出提示框(Pl ...

  5. js获取当前时间并转化

    1.转化为  年月日 function getNowFormatDate() { var date = new Date(); var seperator1 = "-"; var ...

  6. NodeJ node.js基础

    因为是Node服务器端的,怎样实现前台和后台请求以及回应 URL(由什么组成的 ),传输的内容:表单数据  文件数据 [图片.压缩包.各种后缀文件] URL的组成 URL由三部分组成: 协议类型 , ...

  7. [ERROR] Can't find error-message file '/data/mysql/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.

    1. MySQL5.7.21启动时报错: [ERROR] Can't find error-message file '/data/mysql/3307/share/errmsg.sys'. Chec ...

  8. Innodb和Mysiam引擎的区别

    一:区别 Mysiam: 1.是非事务安全型. 2.是表级锁. 3.如果执行大量的select,Mysiam是更好的选择. 4.select count(*)from table.Mysiam只简单的 ...

  9. Easy-UI中datebox的默认显示当前日期的最简单的两种方法

    在中有一个Today按钮就是实现显示当前日期,所以我们在src/jquery.datebox.js文件中可以找到currentText:'Today'.所以我们可以使用'currentText'和'T ...

  10. iOS开发者证书-详解/生成/使用

    本文假设你已经有一些基本的Xcode开发经验, 并注册了iOS开发者账号. 相关基础 加密算法 现代密码学中, 主要有两种加密算法: 对称密钥加密 和 公开密钥加密. 对称密钥加密 对称密钥加密(Sy ...