2015-01-10 104 views
2

创建截图目前,我有一个创建一个截图功能,我把这里仅在测试失败

def tearDown(self): 
    self.save_screenshot() 
    self.driver.quit() 

还有被创建,用来存储截图的文件夹。

我不想在测试通过时发生这种情况。

为了避免这种情况发生,我必须添加什么?

感谢所有帮助

+0

你能分享你怎么跑的测试?谢谢。 – alecxe

+0

Idk你的意思,像命令行或单元测试? – programiss

+0

如何从命令行运行它们,正确。另外,你使用的是什么Python版本? – alecxe

回答

1

这里是捕获屏幕截图的一种方式,只有当故障:

def setUp(self): 
    # Assume test will fail 
    self.test_failed = True 

def tearDown(self): 
    if self.test_failed: 
     self.save_screenshot() 

def test_something(self): 
    # do some tests 
    # Last line of the test: 
    self.test_failed = False 

,是在试验的最后一行,我们知道该测试通过(例如,所有的self.assert这种方法的原理是*通过)。此时,我们重置test_failed成员,该成员在setUp中设置为True。在tearDown中,我们现在可以判断测试是否通过,并在适当的时候进行截图。

1

在你的初始化方法中设置一个self.NoFailuresSnapped = 0和之前调用或在函数中检查故障是> self.NoFailuresSnapped目前一些测试环境,当然在返回之前再次设定。

1

如果您的测试失败,sys.exc_info将会有例外。所以,你可以把它作为通过/失败测试结果:

if sys.exc_info()[0]: 
    # 'Test Failed' 
else: 
    # 'Test Passed' 

如果你想利用一个屏幕截图上的失败:

import unittest 
import sys 
from selenium import webdriver 

class UrlTest(unittest.TestCase): 

    def setUp(self): 
     self.driver = webdriver.Chrome() 

    def test_correct_url(self): 
     self.driver.get('https://google.com') 
     self.assertTrue('something.com' in self.driver.current_url) 

    def tearDown(self): 
     if sys.exc_info()[0]: 
      self.driver.get_screenshot_as_file('screenshot.png') 
     self.driver.quit 

if __name__ == '__main__': 
    unittest.main()