Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >回顾18年我的Java自动化测试框架

回顾18年我的Java自动化测试框架

作者头像
wangmcn
发布于 2022-07-26 08:55:55
发布于 2022-07-26 08:55:55
96800
举报
文章被收录于专栏:AllTests软件测试AllTests软件测试
运行总次数:0

回顾18年我的Java自动化测试框架

目录

1、前言

2、框架结构

2.1、app

2.2、config

2.3、data

2.4、driver

2.5、libs

2.6、pythonProject

2.7、result

2.8、src

2.9、sshPrivateKey

2.10、startService

2.11、target

2.12、testng

2.13、pom.xml

1、前言

18年的时候,根据项目组需要,编写了一套 Java 版的自动化测试框架,可进行包括 APP(AndroidiOS)、H5、Web、接口的自动化测试任务。测试报告可通过 HTML 报告或 Excel 报告的方式进行查看。此框架在项目组期间已落地使用并助力测试回归时发现了一些问题(BUG)。

框架开发完成后,只维护了一段时间,之后(离开项目组)就一直到现在没有再维护了,所以一些封装的方法与框架设计思想等有些“过时”了。接下来回顾一下此框架,也算是一个框架总结,为后续的升级改造做准备。

2、框架结构

测试框架(AllRound_Test)整体结构:

2.1、app

app 目录存放手机应用程序,分为 Android 和 iOS。当执行自动化脚本时,如果设置采用先安装手机应用程序的方式,则会根据路径安装指定的 APP 程序。

2.2、config

config 目录存放配置文件。

app.properties 存放 Android / iOS 包名。

browserdriver.properties 存放浏览器驱动的路径。

data.properties 存放测试数据,分为:Android、iOS、H5、接口。

linuxdriver.properties 存放连接 Linux 的配置信息。

mongodriver.properties 存放连接 MongoDB 的配置信息。

sqldriver.properties 存放 MySQL 的配置信息。

sshPrivateKey.properties 存放连接 SSH 的密钥路径。

url.properties 存放访问的 URL 地址,分为:H5、Web。

2.3、data

data 目录存放格式为 .xls 测试数据,分为:Android、iOS、H5、接口。

表格数据内容。

2.4、driver

driver 目录存放浏览器驱动程序,按操作系统分为:Windows、Mac。

2.5、libs

libs 目录,根据测试项目要求,使用 Jython 语言(即在 Java 环境下使用 Python 语言)。

2.6、pythonProject

pythonProject 目录存放 Python 脚本文件。

如图,一个单文件脚本(adder.py)、一个示例项目(TestDemo)。

例如 TestDemo.py 脚本(就是 Python 脚本语法,不需要任何修改)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
import unittest, time, os
import HTMLTestRunner

def data_dirs():
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    DATA_DIRS = (
        os.path.join(BASE_DIR, 'HTMLTestRunner生成测试报告'),
    )
    d = '/'.join(DATA_DIRS)
    print(d)
    return d
    
class Baidu(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(10)
        self.base_url = "http://www.baidu.com/"
        self.verificationErrors = []
        
    #百度搜索用例
    def test_baidu_search(self):
        u'''百度搜索用例'''
        driver = self.driver
        driver.get(self.base_url)
        driver.find_element_by_id("kw").send_keys("HTNMLTestRunner")
        driver.find_element_by_id("su").click()
        
    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)
        
if __name__ == "TestDemo":
    #测试套件
    testunit=unittest.TestSuite()
    #添加测试用例到测试套件中
    testunit.addTest(Baidu("test_baidu_search"))
    #获取当前时间
    now = time.strftime("%Y-%m-%d %H_%M_%S")
    #定义个报告存放路径
    filename = data_dirs() + '/'+now+' result.html'
    fp = open(filename, 'wb')
    #定义测试报告
    runner =HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'百度搜索测试报告', description=u'用例执行情况:')
    #运行测试用例
    runner.run(testunit)
    #关闭报告文件
    fp.close()

2.7、result

result 目录存放测试日志与测试报告。

测试日志。

测试报告-测试步骤。

测试报告-总览。

报错自动截图,并存储在指定目录里。

2.8、src

src 目录存放基类、页面元素、方法封装、报告插件、测试用例、公共方法等。

(1)base 目录存放基类,根据不同的场景分类,可执行 APP(Android、iOS)、Web、接口、Python 脚本。

例如:BaseParpareApp_android.java (执行手机端 Android,部分代码)

(2)pages 目录存放页面元素类。

例如:DemoPage_android.java(部分代码)

(3)pageshelper 目录存放用于不同页面的方法封装。

例如:WeiboPageHelper_android.java(封装登录,部分代码)

(4)plugins 目录存放测试报告插件,支持生成 Excel 或 HTML 共三种方式的测试报告。

(5)testcases 目录存放测试用例。

例如 AppTest_Weibo_android.java(授信,部分代码)

(6)utils 目录存放公共方法。各种点击事件、读写 Excel 表格、初始化数据、调用命令行、接口方法封装、MySQL 操作(增删改查)、键盘操作、SSH 命令操作、MD5 加密、MongoDB 操作(增删改查)、驱动本地/远程浏览器、封装 Selenium 方法和常用方法、启动与关闭 appium 服务等。

例如:SelectBrowser.java(打开本地浏览器,部分代码)

2.9、sshPrivateKey

sshPrivateKey 目录存放用于连接 Linux 的 SSH 私钥。

2.10、startService

startService 目录存放可在命令行执行启动 Appium 服务的命令。

启动 Appium 服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
appium --address 127.0.0.1 --port 4723 --no-reset --session-override

2.11、target

target 目录存放通过 Maven 编译该项目后所产生的 .class 文件等。

2.12、testng

testng 目录存放单元测试框架 TestNG 所要执行脚本的 .xml 文件。

例如:testng_weibo_honor7.xml(配置参数,部分内容)

将测试用例合并为测试集。

三种测试报告模式,选择哪种,就把监听打开即可。

2.13、pom.xml

pom.xml 文件,描述了该项目的 Maven 坐标,依赖关系,开发者需要遵循的规则,组织等,是项目级别的配置文件。

使用 Jenkins 持续集成的方式,进行手动或自动或定时触发此文件,来进行测试脚本的执行。

例如:pom_android_weibo.xml 文件(部分内容)

主要依赖的包 testng、appium、jxl、log4j、selenium、mysql-connector-java、okhttp、allure-testng-adaptor、mongo-java-driver 等。

指定执行的 TestNG 的 .xml 文件。

整体流程:

Jenkins(手动/自动/定时)触发 -> Maven 的 pom.xml 文件 -> TestNG 的 .xml 文件 -> 测试集(启动服务、测试基类、测试用例、操作步骤、公共方法)-> 测试日志、测试报告、错误截图

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AllTests软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
自动化测试框架Robot Framework - 自动化测试示例
SeleniumLibrary是Robot Framework的Web测试库,内部使用Selenium工具。
wangmcn
2022/07/26
2.4K0
自动化测试框架Robot Framework - 自动化测试示例
APP UI自动化测试思路总结
  python+appium自动化测试系列就要告一段落了,本篇博客咱们做个小结。
顾翔
2020/11/05
1.3K0
minium-小程序自动化测试框架
提起 UI 自动化测试,web 端常用 Selenium,手机端常用 Appium,那么很火的微信小程序可以用什么工具来进行自动化测试?本篇将介绍一款专门用于微信小程序的自动化测试工具 - minium。
wangmcn
2023/09/27
2.1K0
minium-小程序自动化测试框架
基于Python接口自动化测试框架(初级篇)附源码
  很多人都知道,目前市场上很多自动化测试工具,比如:Jmeter,Postman,TestLink等,还有一些自动化测试平台,那为啥还要开发接口自动化测试框架呢? 相同之处就不说了,先说一下工具的局限性:
全栈测试开发日记
2023/02/02
7630
基于Python接口自动化测试框架(初级篇)附源码
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
虫无涯
2024/11/12
5310
聊聊自动化测试框架
  无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。
顾翔
2019/12/11
1.9K0
聊聊自动化测试框架
unittest 测试框架
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/04
9370
unittest 测试框架
App自动化测试方案
(1)测试用例覆盖率(覆盖率决定测试效率,选择合适用例,应约占功能用例集的20%~50%)
测试开发社区
2019/09/20
3.9K0
App自动化测试方案
Java自动化测试框架-05 - 来给你的测试报告化个妆整个形 - (上)(详细教程)
  前边通过宏哥的讲解和分享想必小伙伴们和童鞋们都已经见过testng框架生成的测试报告,是不是它的样子和长相实在是不敢让大家伙恭维。那么今天宏哥就当一回美容师,由宏哥来给它美美容;当一回外科医生,做一名整形医生。由宏哥来主刀,给它整整形。让她变得丰满、美丽、可爱一些。
北京-宏哥
2019/11/04
1.1K0
Appium PO模式UI自动化测试框架——设计与实践
相信做过测试的同学都听说过自动化测试,而UI自动化无论何时对测试来说都是比较吸引人的存在。相较于接口自动化来说它可以最大程度的模拟真实用户的日常操作与特定业务场景的模拟,那么存在即合理,自动化UI测试自然也是广大测试同学职业道路上必不可少的必修课题之一了。
Austin_zhai
2022/11/01
1.4K0
Appium PO模式UI自动化测试框架——设计与实践
Web项目接口自动化测试框架搭建
一、原理及特点 参数放在XML文件中进行管理 用httpClient简单封装一个httpUtils工具类 测试用例管理使用了testNg管理,使用了TestNG参数化测试,通过xml文件来执行case。 测试报告这里用到第三方的包ReportNG 项目组织用Maven 二、准备 使用工具:eclipse,maven 用到的第三方jar包:dom4j、reportng、testng 理解难点:httpUtils和xmlUtil工具类的封装;dom4j使用;CookieStore的应用
用户1257215
2018/01/30
1.1K0
Web项目接口自动化测试框架搭建
浅谈BDD下的自动化测试框架
测试驱动开发(TDD)相信大家已经很熟悉了,而行为驱动开发(BDD)其实是TDD的一种演化。那什么是BDD,为什么要使用BDD, BDD下的自动化测试该如何做呢?本文将通过简单的例子,向大家展示如何使用Cucumber 描述需求,编写、执行测试用例,并输出测试报告。
yuanyi928
2018/08/15
8.2K0
浅谈BDD下的自动化测试框架
WEB-UI自动化测试-干货
少年读书,如隙中窥月;中年读书,如庭中望月;老年读书,如台上玩月。皆以阅历之深浅,为所得之深浅耳。
测试小兵
2019/11/20
1.9K0
自动化测试:如何构建Selenium框架
https://www.logigear.com/blog/test-automation/building-a-selenium-framework-from-a-to-z/
测试小兵
2020/07/09
2.1K0
测试人如何高效地设计自动化测试框架?
关于测试框架的好处,比如快速回归提高测试效率,提高测试覆盖率等这里就不讨论了。这里主要讨论自动化框架包含哪些内容,以及如何去设计一个测试框架。
测试开发社区
2021/10/11
1.1K0
自动化测试框架,YYDS
无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。
程序员小猿
2022/03/09
5860
自动化测试框架,YYDS
Appium移动端自动化测试--测试用例改造
可见下面的两个框架的脚本,略有不同,setup和setUp,teardown和tearDown。
软测小生
2020/02/13
1.1K0
Appium移动端自动化测试--测试用例改造
接口自动化测试框架Karate入门
在这篇文章中,我们将介绍一下开源的Web-API自动化测试框架——Karate介绍
顾翔
2019/12/11
3.5K0
接口自动化测试框架Karate入门
Appium+python自动化(四十二)- 寿终正寝完结篇 - 结尾有惊喜,过时不候(超详解)
按照上一篇的计划,今天给小伙伴们分享执行测试用例,生成测试报告,以及自动化平台。今天这篇分享讲解完。Appium自动化测试框架就要告一段落了。
北京-宏哥
2019/11/23
1.8K0
Python的单元测试框架
如上图所示,由敏捷大师Martin Fowler测试分层概念,以区别于传统的自动化测试。
TestOps
2022/04/07
6790
Python的单元测试框架
推荐阅读
相关推荐
自动化测试框架Robot Framework - 自动化测试示例
更多 >
交个朋友
加入腾讯云官网粉丝站
双11活动抢先看 更有社群专属礼券掉落
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档