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

Java
272
0
0
2023-05-21

目录

1、前言

2、框架结构

2.1、app

2.2、config

2.3、data

2.4、driver

2.5、libs

2.6、 python Project

2.7、result

2.8、src

2.9、 SSH PrivateKey

2.10、startService

2.11、target

2.12、testng

2.13、pom.xml

1、前言

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

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

2、框架结构

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

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

2.1、app

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

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

2.2、config

config 目录存放配置文件。

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


app.properties 存放 Android / iOS 包名。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.3、data

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

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

表格数据内容。

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

2.4、driver

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

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

2.5、libs

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

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

2.6、pythonProject

pythonProject 目录存放 Python 脚本文件。

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

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

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

 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 = "#34;
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. HTML TestRunner(stream=fp, title=u'百度搜索测试报告', description=u'用例执行情况:')
#运行测试用例
runner.run(testunit)
#关闭报告文件
fp.close()  

2.7、result

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

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

测试日志。

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

测试报告-测试步骤。

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

测试报告-总览。

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

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

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

2.8、src

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.9、sshPrivateKey

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

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

2.10、startService

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

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

启动 Appium 服务:

 appium --address  127.0.0.1  --port 4723 --no-reset --session-override  

2.11、target

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

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

2.12、testng

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

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

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

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

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

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

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

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

2.13、pom.xml

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

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

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

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

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

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

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

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

整体流程:

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