回顾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)删除。
上一篇 2022年6月19日 18:19
下一篇 2022年6月19日 18:20

相关推荐

联系我们

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