创建截图目前,我有一个创建一个截图功能,我把这里仅在测试失败
def tearDown(self):
self.save_screenshot()
self.driver.quit()
还有被创建,用来存储截图的文件夹。
我不想在测试通过时发生这种情况。
为了避免这种情况发生,我必须添加什么?
感谢所有帮助
创建截图目前,我有一个创建一个截图功能,我把这里仅在测试失败
def tearDown(self):
self.save_screenshot()
self.driver.quit()
还有被创建,用来存储截图的文件夹。
我不想在测试通过时发生这种情况。
为了避免这种情况发生,我必须添加什么?
感谢所有帮助
这里是捕获屏幕截图的一种方式,只有当故障:
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
中,我们现在可以判断测试是否通过,并在适当的时候进行截图。
在你的初始化方法中设置一个self.NoFailuresSnapped = 0
和之前调用或在函数中检查故障是> self.NoFailuresSnapped
目前一些测试环境,当然在返回之前再次设定。
如果您的测试失败,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()
你能分享你怎么跑的测试?谢谢。 – alecxe
Idk你的意思,像命令行或单元测试? – programiss
如何从命令行运行它们,正确。另外,你使用的是什么Python版本? – alecxe