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/    *******

原文地址:https://www.cnblogs.com/wuzm/p/12592435.html

时间: 2024-08-06 19:42:36

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

应用内截屏的代码,在Activity中测试可用

截屏功能让我十分头疼,想做个无需root的又找不到资料.这里暂且分享一个无需root的,在应用内截屏的代码,本文转自:http://blog.csdn.net/csh159/article/details/7876415   截图后→   布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/

使用laravel框架与phantomjs实现截屏功能

在网上看到的关于phantomjs实现截屏功能很多都是与node结合在一起使用,并需要输入命令才能执行.因此我想要实现输入网址即可截屏并输出图片的功能. 一:下载并安装phantomjs 二:装后台集成环境Appserv 三:安装laravel开发框架 三:实现代码及注意事项 1.phantomjs很好安装,http://phantomjs.org/官网下载到任意目录(注意:如果为了省事,最好安装到本地环境变量的目录下  如下图),如果不想下载到此目录下,可下载完后到计算机属性的环境变量增加ph

完美解决scrollView 截屏图片模糊

UIGraphicsBeginImageContext   首先说明一下UIGraphicsBeginImageContextWithOptions 和UIGraphicsBeginImageContext区别:   1: UIGraphicsBeginImageContext(CGSize size) 参数size为新创建的位图上下文的大小.它同时是由UIGraphicsGetImageFromCurrentImageContext函数返回的图形大小. 该函数的功能同UIGraphicsBeg

cocos2dx之保存截屏图片

http://blog.csdn.net/ganpengjin1/article/details/19088921 我们要保存当前的运行的scene的截图的话,我用到CCRenderTexture,看例子代码: [cpp] view plaincopy CCSize size = CCDirector::sharedDirector()->getWinSize(); CCRenderTexture *screen = CCRenderTexture::create(size.width, siz

android-实现手机截屏效果,保存截屏图片

一.准备一张图片 拷贝screenshot_panel.9.png放在目录drawable-xhdpi下 二.activity_main.xml 代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="matc

《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第六节 - 截屏图片处理类AdbChimpImage

作者 自主博客 微信 CSDN 天地会珠海分舵 http://techgogogo.com 服务号:TechGoGoGo 扫描码: http://blog.csdn.net/zhubaitian

【Android实战】Bitmap图片的截屏、模糊处理、传递、使用

项目中遇到了这样一个需求: 当某个条件满足时就截取当前屏幕.并跳转到另外一个页面,同一时候将这个截屏图片作为下一个页面的背景图片,同一时候背景图片须要模糊处理 接下来就一步一步解决这个问题: 1.截取无状态栏的当前屏幕图片.请參考takeScreenShot方法 2.使图片高斯模糊的方法请參考blurBitmap方法 注意:RenderScript是Android在API 11之后增加的,用于高效的图片处理,包含模糊.混合.矩阵卷积计算等 public class ScreenShotUtil

iOS开发-检测用户截屏, 并获取所截图片

微信可以检测到用户截屏行为(Home + Power),并在稍后点击附加功能按钮时询问用户是否要发送刚才截屏的图片,这个用户体验非常好.于是乎, 我也想着实现这个功能. 在iOS7之前, 如果用户截屏,系统会自动取消屏幕上的所有 touch 事件,(使用 touchesCancelled:withEvent: 这个方法)那么我们就可以检测这个方法的调用,然后加载本地最新图片再加以判断来实现我们的目的.但在 iOS 7 之后,截屏不再会取消屏幕的 touch 事件,所以导致了 Snapchat 和

Android之Bitmap图片的截屏、模糊处理、传递、使用

项目中遇到了这样一个需求: 当某个条件满足时就截取当前屏幕,并跳转到另外一个页面,同时将这个截屏图片作为下一个页面的背景图片,同时背景图片需要模糊处理 接下来就一步一步解决问题: 1.截取无状态栏的当前屏幕图片,请参考takeScreenShot方法 2.使图片高斯模糊的方法请参考blurBitmap方法 注意:RenderScript是Android在API 11之后加入的,用于高效的图片处理,包括模糊.混合.矩阵卷积计算等 public class ScreenShotUtil { // 获