目前我有一个创建截图的功能,我在这里称之为
def tearDown(self):
self.save_screenshot()
self.driver.quit()
还创建了一个用于存储屏幕截图的文件夹。
我不希望在测试通过时发生这种情况。
为了不发生这种情况,我需要添加什么?
感谢所有帮助
答案 0 :(得分:1)
在初始化方法中设置self.NoFailuresSnapped = 0
并在调用之前或在函数内检查测试环境中当前失败次数为> self.NoFailuresSnapped
,当然在返回之前再次设置它。
答案 1 :(得分: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
中,我们现在可以判断测试是通过还是失败,并在适当的时候进行截屏。
答案 2 :(得分: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()