游戏测试 浅谈测试开发工具链环节 (三种常见机制)

陈子昂 for 公开课 · January 24, 2019 · Last by simple replied at January 25, 2019 · 1095 hits

工具链

会把业务线和CI线上的内容进行打通,打通包含考虑到一些异常情况,让异常情况分类处理及时。
因为这块工具链也没必要做1个短信接入报警系统。
但是有必要做【熔断机制】和【发现到解决处理】或者【切换其他分支】继续使用。

业务例子-熔断

比如自动化数据驱动回写数据,但是excel比如忘记关闭了,就会导致自动化在写入的时候失利,导致大量错误,费时力。
os库只提供了系统级别的权限,并没有直接支持的。
我们先写一个函数体if_condition()

#util/Base.py
def if_condition(self):
"""
验证excel是否支持回写,验证拦截条件
:return:
"""

if os.access(self.xlsx_path,os.X_OK): #X_OK可执行权限
try:
wb = openpyxl.load_workbook(set._xlsx_path)
wb.save(self.xlsx_path)
closed =True
except PermissionError:
closed =False
return closed

这部分逻辑最好不要放在单元测试框架的setup_class的函数内,可以放到run文件里,道理是一样的。

#util/Base.py
if not base.if_condition(): #base库下面的一个函数名
print("请检查excel是否已打开,添加邮件功能")
return

如果是放在main区域,而不是1个函数体,return不行,注意return本身熔断效果不高。

#run.py 
if __name__ == '__main__':
if not Base().if_condition():
print("请检查excel是否已打开,添加邮件功能")
sys.exit(0) #熔断
pytest.main([testdir,'-s', '-q', '--alluredir',"./allure-result"]) #需要安装环境变量的allure
if gen_report(resultdir,reportdir):#函数把xml创建报告后,把xml mov到对应区域
省略

业务例子-切换到处理

这个例子直接熔断太傻了,因为是可以自行处理的。
第一步先把.if_condition()可以不对外,在写1个函数包住他。无视是wins的,mac等,只要判断个平台在自动判断执行就行了。

#util/Base.py
def excel_close(self):
"""
检查excel物理是否关闭,然后关闭掉
:return:
"""

if not self.if_condition():
work =os.popen('tasklist /FI "IMAGENAME eq EXCEL.exe"').read()
print(work) #可以打印
res =os.system('TASKKILL /F /IM EXCEL.exe')
if res ==0:print("ok")
if self.if_condition():#再次验证
return True

以上代码使用了python内置特性os.system,如果执行前已经关掉了不会发生任何事。
这个例子最好的做法是【发现到解决处理】,run文件尽量精简

#run.py 
if __name__ == '__main__':
if Base().excel_close(): #之前函数修改为这个 自动化条件判断
pytest.main([testdir,'-s', '-q', '--alluredir',"./allure-result"])
if gen_report(resultdir,reportdir):
省略

补充思考

【熔断机制】比如打包,装饰器重执行后,n次打包失败,根据打包日志自动解析的反馈采取熔断机制邮件给对应开发者群组。
【发现到解决处理】同样比如appium自动化,appium的sessions走的是web传输,如果get或者curl固定url,里面的status不为0了。也可以对应处理。
【切换其他分支】比如自动化依赖修改一些对象的值(不同场景用深浅拷贝),继续往下,但对象文件丢失或者写入失败。需要在另外1个地方预备另外一套方式可以切换过去。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

熔断有意思

这个熔断考虑的很好

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up