1.背景
针对相似结构的表单,为了提高ui自动化编写效率,减少以减少重复工作,设想是否可以设计一个针对neoUI2.0通过元数据驱动的方式适应不同业务对象的测试框架
2.设计元数据模型
– 字段名
– 字段类型
– 是否必填
-是否只读
– 默认值
– 业务逻辑(可选,后期扩展)
3.构建自动化测试框架
-
利用现有的RF框架已实现的功能,通过实体名称打开对应实体的表单
-
- 关键L进入【进入菜单】
-
关键字进入【点击新建业务数据】
-
实现元数据驱动的表单填充,根据元数据动态填充表单,循环获取元素找到元素对应的字段名,判定字段名类型然后输入具体的值
-
- fieldType=get_field_type(fieldName)
if fieldType==None:
break
elif fieldType== 'text':
input_text(field.name, "sample text")
elif fieldType == '单选':
select_option(field.name, "option value")
# 其他字段类型处理...
4.编写测试用例
-
前置条件
-
- 根据实体名称通过api获取当前实体所有的字段,组装数据,并返回数据
def get_fields(opportunity):
#通过api获取实体字段并取出字段相关信息
fieldDatas = '{"机会名称":{"type":"text","isReadOnly":"是","isRequired":"是","isDefault":"是"},"客户名称":{"type":"associated","isReadOnly":"否","isRequired":"否","isDefault":"否"}}'
return fieldDatas
b.根据打开表单上的字段名称,返回当前字段对应的类型,处理当前字段是否只读是否必填是否有默认值等
def get_field_type(fildName):
for key, value in fieldDatas.items():
if fildName==key:
if value['isReadOnly']=="是":
break
else:
#如果是必填怎么处理 ,如果是有默认值怎么处理
return value['type']
-
只需要准备实体名称就可以针对表单上的字段添加一个默认的值并保存
-
- 优点:不需要准备非关联字段的测试数据,默认指定一个值
- 缺点:数据太死,不能指定值输入
5.利用数据驱动的方式动态添加表单布局?
- 准备测试数据
- 根据测试数据apikey字段布局表单设计器
- 实现元数据驱动的表单填充,根据元数据动态填充表单
5-1 :准备数据
data = {'opportunityName': '新商机', 'money': 10000,'accountId':123456789321}
5-2:根据测试数据apikey字段布局表单设计器
- 获取data中的key,通过后台布局设计器,把获取到的字段的apikey对应的字段配置到布局上面
- 如何才能通过准备好的一个apikey能设计好一个表单布局?待调研
5-3:实现元数据驱动的表单填充,根据元数据动态填充表单
上述条件成立的话,准备好哪些字段的数据,表单既可以布局配置哪些字段,跟进配置字段的数据和对应字段的值进行填充
5-4:优缺点
-
优点:可以根据业务场景准备指定的数据
-
缺点:
-
- 就是需要准备测试数据,字段的apikey需要一一对应
- 准备的数据需要根据一定的格式定义
- 自己需要写断言
5-5:后期扩展设想
- 准备的数据可扩展字段是否必填,是否只读
- 布局设计器改造通过是否必填只读然后布局配置对应的场景
- 准备数据传入断言结果,通过数据中的断言结果,直接断言,如此的话,只需要按照一定格式准备好数据,不需要编写任何代码
- 如果进一步完善的话 jira上写的用例按照一定格式设计,测试用例数据直接从jira获取,完全为全自动化执行,无需人为干预
评论前必须登录!
注册