2015-01-10 92 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()