结构介绍
之前分享过一篇安卓UI测试,但是没有实现数据与代码分离,后期维护成本较高,所以最近抽空优化了一下。
不想看文章得可以直接去Github,欢迎拍砖
大致结构如下:
结构.png
-
testyaml管理用例,实现数据与代码分离,一个模块一个文件夹
-
public 存放公共文件,如读取配置文件、启动appium服务、读取Yaml文件、定义日志格式等
-
page 存放最小测试用例集,一个模块一个文件夹
-
results 存放测试报告及失败截图
report.png
-
logs 存放日志
logs.png
logdetail.png
- testcase 存放测试用例
- runtest.py 运行所有测试用例
yaml格式介绍
首先看下yaml文件的格式,之前也写过一点关于yaml语法学习的文章
testcase部分是重点,其中:
-
element_info:定位元素信息
-
find_type:属性,id、xpath、text、ids
-
operate_type: click、sendkeys、back、swipe_up 为back就是返回,暂时就四种
上面三个必填,operate_type必填!!!!!!
-
send_content:send_keys 时用到
-
index:ids时用到
-
times: 返回次数或者上滑次数
testinfo:
- id: cm001
title: 新增终端门店
execute: 1
testcase:
-
element_info: 客户
find_type: text
operate_type: click
-
element_info: com.fiberhome.waiqin365.client:id/cm_topbar_tv_right
find_type: id
operate_type: click
-
element_info: com.fiberhome.waiqin365.client:id/custview_id_singletv_inputtext
find_type: ids
operate_type: send_keys
send_content: auto0205
index: 0
-
element_info:
find_type:
operate_type: swipe_up
times: 1
-
element_info: 提交
find_type: text
operate_type: click
-
element_info:
find_type:
operate_type: back
times: 1
代码部分
公共部分
个人觉得核心的就是公共部分,相当于建房子,公共部分搞好了,后面仅仅是调用即可,建房子把架子搭好,后面就添砖加瓦吧。
读取配置文件readconfig.py
设置日志格式logs.py
获取设备GetDevices.py
这几个通用的就不做介绍了
- 读取yaml文件 GetYaml.py
主要用来读取yaml文件
#coding=utf-8
#author='Shichao-Dong'
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import yaml
import codecs
class getyaml:
def __init__(self,path):
self.path = path
def getYaml(self):
'''
读取yaml文件
:param path: 文件路径
:return:
'''
try:
f = open(self.path)
data =yaml.load(f)
f.close()
return data
except Exception:
print(u"未找到yaml文件")
def alldata(self):
data =self.getYaml()
return data
def caselen(self):
data = self.alldata()
length = len(data['testcase'])
return length
def get_elementinfo(self,i):
data = self.alldata()
# print data['testcase'][i]['element_info']
return data['testcase'][i]['element_info']
def get_findtype(self,i):
data = self.alldata()
# print data['testcase'][i]['find_type']
return data['testcase'][i]['find_type']