提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、页面元素yaml文件封装
- 二、测试数据yaml文件封装
- 总结
前言
一、页面元素yaml文件封装
1.元素yaml文件字段说明
- function_name: forntRedisValueClick --调用得方法名
element:
- el_types: CSS_SELECTOR -- 元素类型
operation_type: click --元素操作类型
element: div[class^=redis-input-config-cls] --元素
index: --通过下标操作元素
count: 0 --定位元素个数
attribute: --通过属性名获取文本
label: --通过标签名获取文本
info: redis前置条件,点击redisValue值输入框
2.元素yaml工具类
import logging.config
import os, sys,yaml
from congfig.pub.FrontColour import FrontColour as FC
from congfig.pub.FilePath import LOG_PATH_CON, TEST_DATA, PAGE_ELEMENT_PATH
from tools.StaticFunction import StaticFunction as SF
logging.config.fileConfig(LOG_PATH_CON,disable_existing_loggers=False)
# 操作元素yaml工具类
class OperationElementYaml():
#限制该类只允许传入列表内参数
# __slots__ = ['__yamlName', '__funcName', 'yamlElPath']
#通过yaml文件名称拼接yaml路径获取需要操作的yaml数据
def __init__(self,yamlName,funcName):
self.__yamlName = yamlName
self.__funcName = funcName
self.yamlElPath = os.path.join(PAGE_ELEMENT_PATH,yamlName)
#打开yaml文件
@property
def openYaml(self):
if os.path.exists(self.yamlElPath):
with open(self.yamlElPath,'r',encoding='utf-8') as yamlFile:
yamlData = yaml.load(yamlFile,Loader=yaml.FullLoader)
return yamlData
else:
logging.error(FC.RED%"yaml路径不存在:{0},请检查后执行".format(self.yamlElPath))
sys.exit()
#判断func_name是否存在于yaml中,若存在则将该节点数据返回
@property
def checkFunName(self):
yamlDict = self.openYaml
for dict_i in yamlDict:
if dict_i.get("function_name") == self.__funcName:
return dict_i
else:
logging.error(FC.RED%"方法名在当前yaml文件中未找到,方法名:{0},yaml文件名:{1}".format(self.__funcName,self.__yamlName))
sys.exit()
#判断节点数据类型是否为dict,根据下标获取element数据
@property
def getElData(self):
yamlDict = self.checkFunName
if isinstance(yamlDict,dict):
element_list = yamlDict["element"]
yaml_data = element_list[0]
return yaml_data
else:
logging.error(FC.RED%"yaml数据错误,数据:{0}".format(yamlDict))
#获取操作类型
@property
def getOperationType(self):
return self.getElData.get("operation_type")
#获取types
@property
def getElType(self):
return self.getElData.get("el_types")
#获取count
@property
def getCount(self):
count = self.getElData.get("count")
if count == None:
return 0
else:
return count
#获取element
@property
def getElement(self):
return self.getElData.get("element")
#获取info信息
@property
def getINFO(self):
return self.getElData.get("info")
#获取attribute信息
@property
def getAttribute(self):
return self.getElData.get('attribute')
#获取label信息
@property
def getLabel(self):
return self.getElData.get('label')
#获取Index信息
@property
def getIndex(self):
index = self.getElData.get('Index')
if index ==None:
return 0
else:
return index
二、测试数据yaml文件封装
1.测试数据yaml文件字段说明
- function_name: project_search_input
testdata:
- test_001: '11,1111,2,3,4' --用例编号多个元素英文逗号分隔
info: 输入列表存在的数据 --用例描述
- test_002: '1111'
info: 输入列表不存在的数据
- test_003: '!@#$%^&'
info: 输入特殊字符
2.测试数据yaml工具类,继承元素操作的yaml工具
class OperationTestDataYaml(OperationElementYaml):
'''
操作测试数据yaml工具类
'''
#通过yaml文件名称拼接yaml路径获取需要操作的yaml数据
def __init__(self, yamlName,funcName):
super().__init__(yamlName,funcName)
self.yamlElPath = os.path.join(TEST_DATA, yamlName)
#判断节点数据类型是否为dict,根据下标获取testdata数据
@property
def getTdData(self):
yamlDict = self.checkFunName
if isinstance(yamlDict,dict):
data = yamlDict["testdata"]
return data
else:
logging.error("执行{0}方式,错误信息:yaml数据错误,数据:{1}".format("getTdData",yamlDict))
#获取测试用例数据,从test_data截取
def getTestData(self,index):
SF.checkCount(index)
strTestData = self.getTdData[index].get("test_00" +str(index+1))
#验证传入数据为空时,直接return 空字符串进行处理
if strTestData == None:
return ''
else:
return tuple(strTestData.split(','))
总结
1.类方法还在持续优化中,代码中存在一些冗余逻辑问题,有待优化
2.每天学习一点,能更卷一点
3.框架整体还在持续优化中,其它工具类方法后续会慢慢更新