最近今天忙着优化框架,所以更新迟了些,先来看看在测试报告中加入截图怎么做吧,稍后分享一下我最近优化的成果。
查了很多资料,看到最多的是通过hook函数去获取用例执行状态然后进行截图,那个应该是最方便的,但是呢,我比较笨看不太懂,所以就用了从别人那里学来的另一个方法。
封装一个断言失败添加截图的方法。
代码示例:
def get_screenshot(self, doc):
global logger
logger = DemoLog().get_log()
logger.info('开始截图')
now = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
pic_name = now + '.png'
self.driver.get_screenshot_as_file(pic_name)
with open(pic_name, mode='rb') as f:
file = f.read()
allure.attach(file, doc, allure.attachment_type.PNG)
return pic_name
# 通过断言进行截图
def result_assert(self, res, expected, doc=''):
try:
assert res in expected
except AssertionError:
screen_name = self.get_screenshot(doc)
logger.info(f'截图成功,图片为{screen_name}')
raise
解读一下上面的两个方法
日志的之前讲过,我就直接略过了
设置一个当前时间作为变量,然后用这个时间加入到图片名字里,这样可以避免图片名字的重复
driver.get_screenshot_as_file()这个方法是截图用的,使用驱动器进行截图,并命名为pic_name
然后读取截图的图片文件,allure.attach是将该截图文件添加进测试报告,doc参数在下面断言的方法中传入
尝试进行断言,如果res在excepted中则通过,否则抛出断言错误,并且调用截图方法并加入测试报告
上面的res是你想断言的结果,excepted是元素的属性,doc是断言后的提示语。
在写断言的时候就可以直接调用,这样一旦断言失败就可以自动截图并添加到报告中了