pytest框架优化——将异常截屏图片加入到allure报告中

Posted wuzm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest框架优化——将异常截屏图片加入到allure报告中相关的知识,希望对你有一定的参考价值。

痛点分析:

在做allure定制化的时候,关于附件添加这一块,我们在代码里可以添加我们准备好的附件,这里用图片,通过下面的方法就能实现

allure.attach(file, ‘图片描述‘, allure.attachment_type.PNG)

技术图片

技术图片

那如果我们执行测试用例生成的allure测试报告中,能把失败或者异常的测试用例的异常截图也自动添加到allure报告中,岂不更完美?

问题思考:

1.用例执行完后,异常截图图片都在OutPus目录下,怎么去跟用例关联?

2.用什么方法去添加到allure报告中?

3.异常截图那么多,我怎么把相关的异常截图图片添加到对应的用例下呢?

4.考虑到了代码的执行顺序了吗?

5.截图是从哪里生成的,是调用了什么方法才会生成异常截图图片?

......

带着以上等等疑问,慢慢摸索,总结出三点:

  • 代码的执行顺序
  • 异常截图是从driver.save_screenshot(file_name)方法中产生
  • 异常截图的方法是封装在basepage模块下

解决方法:

因为测试用例执行过程中,测试步骤会调用PageObjects里面的方法,而PageObjects里面的方法又调用的是basepage里面的一系列action方法,而action方法封装里面又调用了截屏捕获的方法,所以我们只需要将allure.attach()方法添加到截屏捕获的方法里面就可以了。

技术图片

技术图片

点开异常截图,可以看到具体的图片内容:

技术图片

代码如下:

技术图片
def save_screenshot(self, img_doc):
    ‘‘‘
    页面截屏保存截图
    :param img_doc: 截图说明
    :return:
    ‘‘‘
    file_name = OUTPUTS_DIR + "{}_{}.png".format(datetime.strftime(datetime.now(), "%Y%m%d%H%M%S"), img_doc)
    self.driver.save_screenshot(file_name)
    with open(file_name, mode=‘rb‘) as f:
        file = f.read()
    allure.attach(file, img_doc, allure.attachment_type.PNG)
    case_logger.info("页面截图文件保存在:{}".format(file_name))
技术图片

 

 

*******尊重作者,本文是本人转载自:https://www.cnblogs.com/xiaogongjin/    ******* 

以上是关于pytest框架优化——将异常截屏图片加入到allure报告中的主要内容,如果未能解决你的问题,请参考以下文章

Appium 并发多进程基于 Pytest框架

pytest之执行测试pytest.main()的使用

pytest自动化7:assert断言

在 macOS 中,如何自动压缩截屏图片大小

VC++优化截屏如何实现

截屏快捷键