博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python unittest addCleanup中也加失败截图功能
阅读量:6686 次
发布时间:2019-06-25

本文共 2747 字,大约阅读时间需要 9 分钟。

在一文中提到了失败截图的方法

但在实际测试中,如果我们的测试用例中加了addCleanups动作,如果addCleanups中动作失败了,就不会截图。那么该怎么做呢,解铃还得系铃人,还是得从addCleanups下手

 

思路:

我将在 addCleanup中再加一个截图的函数,但怎么判断用例是用例内失败还是addCleanup中失败呢,方法如下

我们在执行完用例后,看看self的属性,包括如下:

(Pdb) print dir(self)['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_addSkip', '_baseAssertEqual', '_classSetupFailed', '_cleanups', '_deprecate', '_diffThreshold', '_formatMessage', '_getAssertEqualityFunc', '_resultForDoCleanups', '_testMethodDoc', '_testMethodName', '_truncateMessage', '_type_equality_funcs', 'addCleanup', 'addTypeEqualityFunc', 'assertAlmostEqual', 'assertAlmostEquals', 'assertDictContainsSubset', 'assertDictEqual', 'assertEqual', 'assertEquals', 'assertFalse', 'assertGreater', 'assertGreaterEqual', 'assertIn', 'assertIs', 'assertIsInstance', 'assertIsNone', 'assertIsNot', 'assertIsNotNone', 'assertItemsEqual', 'assertLess', 'assertLessEqual', 'assertListEqual', 'assertMultiLineEqual', 'assertNotAlmostEqual', 'assertNotAlmostEquals', 'assertNotEqual', 'assertNotEquals', 'assertNotIn', 'assertNotIsInstance', 'assertNotRegexpMatches', 'assertRaises', 'assertRaisesRegexp', 'assertRegexpMatches', 'assertSequenceEqual', 'assertSetEqual', 'assertTrue', 'assertTupleEqual', 'assert_', 'attach_png', 'class_handle_png', 'clean_resource', 'config', 'countTestCases', 'debug', 'defaultTestResult', 'doCleanups', 'execute_from', 'fail', 'failIf', 'failIfAlmostEqual', 'failIfEqual', 'failUnless', 'failUnlessAlmostEqual', 'failUnlessEqual', 'failUnlessRaises', 'failureException', 'ff', 'handle_png', 'id', 'longMessage', 'maxDiff', 'run', 'setUp', 'setUpClass', 'setup_resource', 'shortDescription', 'skipTest', 'skip_check', 'tearDown', 'tearDownClass', 'landhu.cnblogs.com', 'web_driver']

你看看有一个resultForDoCleanups参数,我们看看

(Pdb) print self._resultForDoCleanups
(Pdb) print self._resultForDoCleanups()

很好,我们就从这里下手,tearDown与上文截图链接不变,只需加入返回resultForDoCleanup值,如下

if sys.exc_info()[0]:            .......        self.errors,self.failures = len(self._resultForDoCleanups.errors),len(self._resultForDoCleanups.failures)

接着,我们加一个用于addCleanup截图的函数,如下

def ff(self):        errors, failures = len(self._resultForDoCleanups.errors), len(            self._resultForDoCleanups.failures)        if (errors-self.errors or failures-self.failures) != 0:            log.info(u"截图")            log.info("Add cleanup save")            screen_shot = self.web_driver.get_screenshot_as_png()

然后在setUp里加addCleanup就行

self.addCleanup(self.ff)

转载于:https://www.cnblogs.com/landhu/p/10040108.html

你可能感兴趣的文章
repo简介
查看>>
转行啦,转几本.net的书。。。
查看>>
运算符 and or ont
查看>>
对于快速排序算法的递归栈深度的一点改进
查看>>
矩阵乘法2(codevs3147)
查看>>
如何修复Kindle频繁自动锁屏和解锁
查看>>
MongoDB在Windows下安装配置
查看>>
CAFFE安装(3):cuDNN v4
查看>>
hdu 1016 Prime Ring Problem
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(一)——MyBatis的基础知识
查看>>
如何把写好的文件放到提供的地址上提交代码
查看>>
Django 2.0 新特性
查看>>
Tornado Web 服务器
查看>>
精选7款绚丽的HTML5和jQuery图片动画特效
查看>>
【转载】桌面WPF中嵌入Unity3D(Standalone)引擎并实现socket通信
查看>>
Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart
查看>>
Eclipse 项目有红感叹号、小红叉
查看>>
如何使用Dev C++调试(debug)c程序
查看>>
[算法模板]高斯消元
查看>>
BZOJ2242 计算器
查看>>