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

回顾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(Android、iOS)、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 脚本语法,不需要任何修改)。

from selenium import webdriverimport unittest, time, osimport HTMLTestRunnerdef 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 dclass 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.driverdriver.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 服务:

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 文件 -> 测试集(启动服务、测试基类、测试用例、操作步骤、公共方法)-> 测试日志、测试报告、错误截图

公众号:AllTests软件测试

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月19日
下一篇 2022年6月19日

相关推荐

  • 千元价位,黑化更强!intel i512400实测对比

    众所周知,在性价比游戏主机方案中,入门级i5一直是销量最大的存在,不管是10400F还是11400F,都是装机市场最受欢迎的CPU,正是因为如此,intel在12代上市之后,针对中…

    2022年6月19日
  • flink流式增量查询hudi表流程分析

    环境 flink 1.13.6 hudi 0.11.0 merge on read 表 代码示例 tEnv.executeSql(“CREATE TABLE tb_pe…

    2022年7月24日
  • 鼻子上的黑头油脂粒越挤越多怎么办?

    我,作为一名黑头战士的王者,首先我要实名diss那些曾经让我走了无数弯路并且让黑头越去越多的产品! 人生最大的失误就是尝试过各种网红药膏鼻贴和精油,啥流行我用啥,现在回头想想呐,这…

    2022年6月7日
  • Git命令简单使用

    Git命令简单使用 背景 最近经常使用Github,每次修改个文件代码都要在网页端操作,感觉效率低下,所以简答学习了解了一下Git命令。至使于可以在命令行进行管理Git仓库,这样就…

    2022年6月16日
  • 软件开发阶段的6大划分详解(需求规格说明书在哪个阶段)

    1计划 对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使…

    2022年11月19日
  • MySQL 索引原理详解

    一、 索引是什么? 1.1. 索引是什么 当一张表有 500 万条数据,在没有索引的 name 字段上执行一个查询: select * from user_innodb where…

    2022年6月20日
  • 美国也要血洗欧盟了,这是要全面扼杀苹果“创新”的节奏吗?

    美国也要血洗欧盟了,这是要全面扼杀苹果“创新”的节奏吗? 对于苹果iPhone设备,采用单独的Lightning端口方式,已经被欧盟盯上了,并且要求统一采用USB-C,这个已经没有…

    2022年6月21日
  • doc怎么打开文件(DOCX格式的文件打不开了怎么办)

     对于平时经常使用word办公软件来处理各种各样文档的小伙伴们来说,docx格式的文件相信大家一定也都非常的熟悉了。docx文件是Microsoft Office 2007之后版本…

    2022年4月19日
  • 哪个牌子的电视盒子好用?测评博主盘点2022电视盒子排行榜

    电视盒子发展至今已有数年的时间,近几年不仅出现了更多的电视盒子品牌,功能也五花八门,有投屏的、有打游戏的、有上网课的、有健身运动的,甚至现在还有儿童故事机的了!这无疑就加大了大家选…

    2022年6月29日
  • 勿用公共安全检验“网红项目”可靠性

    8月2日,文化和旅游部办公厅发布关于进一步加强旅游景区暑期安全管理工作的通知,要求各地积极会同应急、市场监管等部门加大对旅游景区特种设备、消防设施等安全隐患的排查力度。推动旅游景区…

    2022年8月12日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息