📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
为了保障用户资产操作的完整性,历史有设计一个自动化方案,通过对比「预发环境的操作菜单列表+正式环境的操作菜单列表」结果是否一致,来确认当前版本是操作菜单是否与线上一致。
历史方案的不足:需要在2个环境执行相同的脚本,耗费时间多1倍,例如预发环境执行10min,则正式环境也需要执行10min,效率较低。
优化后的方案
正式环境的菜单列表数据以配置文件形式存储,减少在正式环境通过UI自动化读取预期菜单列表值的动作,具体方案如下:

-
使用yaml配置文件存储线上标准的菜单列表配置,如下图:(yaml语法可自行百度)

代码-读取ymal配置文件方法
import yaml
def readYml(yaml_path,key,formats):
# 打开文件
with open(yaml_path,encoding='utf-8') as f:
# 读取文件内容
data_json=f.read()
# safe_load将文件内容转为yaml的python字典格式
res= yaml.safe_load(data_json)
# 通过键值方式读取yaml的列表类型的数据
res_value = res[key][formats]
# 关闭文件
f.close()
return res_value
代码-测试用例中直接读取yaml
# 获取配置文件地址
yaml_path=os.getcwd() +"/data/standard/team.yaml"
def test_team_myspace_1_gdTemplateOperation(page):
"""
团队版 【我的空间】稿定模版-单个操作菜单列表
"""
# 进入我的空间
page.goto(myspace)
time.sleep(3)
# page.goto(myspace)
logger.info(f"当前空间地址:{myspace}")
content=Content(page)
# 从稿定导入模版
content.copyFromGD()
filter=Filter(page)
# 切换到模版tab
filter.tab_template_filter()
content.hoverFirstFileOrFolder()
content.clickFirstFileOrFolderMore()
result=content.readOperation(env,"团队版","【团队版】我的空间-稿定模版")
expect = readYml(yaml_path, "myspace", "gd")
logger.info(f'result:{result}')
logger.info(f'expect:{expect}')
assert result == expect
# 断言 缩略图 默认菜单按钮
content.hoverFirstFileOrFolder()
assert page.get_by_text("编辑", exact=True).first.is_visible()
代码解析:
-
第20行之前的代码都是业务逻辑,通过UI自动化步骤读取操作菜单列表数据,赋值给变量result
-
第21行:从yaml表格内读取预期操作菜单列表数据并赋值给变量expect
-
第24行:通过assert 对比result和expect的值是否一致,一致则表示用例执行通过,否则进行人工确认是否存在缺陷
通过使用yaml配置存储预期的期望值,可以节约一半的自动化执行时间(减去正式环境执行UI自动化读取预期数据的时间),不足之处就是需要建立人工维护yaml配置文件的机制,当迭代更新或者线上配置变更时,需要及时维护更新ymal配置文件。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

561

被折叠的 条评论
为什么被折叠?



