如果我的webdriver测试失败(任何异常或断言错误),我想自动捕获屏幕截图.我正在使用Python unittest和Selenium Webdriver.有没有人有这个问题的解决方案?
我在python的unittest2框架中运行了一些基于类的单元测试.我们正在使用Selenium WebDriver,它有一个方便的save_screenshot()方法.我想抢到拆解()的截图为每个测试失败,以减少花在调试的时间,为什么一个测试失败.
但是,我找不到任何方法只在测试失败时运行代码.tearDown()无论测试是否成功,都会调用,我不想让我们的文件系统混乱,有数百个浏览器屏幕截图用于成功的测试.
你会怎么做?
我希望能够获得特定测试方法的结果并将其输出到拆解方法中,同时使用鼻子测试运行器.有一个很好的例子在这里.
但不幸的是,运行nosetests example.py不起作用,因为鼻子似乎不喜欢超类中的run方法被覆盖的事实:
AttributeError: 'ResultProxy' object has no attribute 'wasSuccessful'
Run Code Online (Sandbox Code Playgroud) 当使用unittestpython 3中的库时,我只想在测试失败时做一些操作(但这应该在类级别,所以我不必为每个测试编写它).例如,当使用表现时,有类似的东西:
def after_step(context, step):
if step.status == "failed":
...
Run Code Online (Sandbox Code Playgroud)
是否有类似的unittest库,如果没有,最简单的方法是做类似的事情?
我只是在短时间内使用unittest.我正在使用Jython 2.7.10"最终版本"
在解释TestResult的Python 2.7文档中,它说:
TestResult类的以下方法用于维护内部数据结构,并且可以在子类中进行扩展以支持其他报告要求.这对于构建在运行测试时支持交互式报告的工具特别有用.
startTest(test)... stopTest(test)... startTestRun()... stopTestRun()
这就是我想要做的......但我无法弄清楚你如何使用TestResult.这是一个SSCCE ......
import unittest
class TestResultX( unittest.TestResult ):
def startTest( self, test ):
print( '# blip')
unittest.TestResult.startTest( self, test )
def stopTest( self, test ):
print( '# blop')
unittest.TestResult.stopTest( self, test )
def startTestRun( self ):
print( '# blep')
unittest.TestResult.startTestRun( self )
def stopTestRun( self ):
print( '# blap')
unittest.TestResult.stopTestRun( self )
class TestCaseX( unittest.TestCase ):
def test_nonsense(self):
print( '# wotcha' )
self.assertTrue( False )
def run( self, test_result=None ):
print( …Run Code Online (Sandbox Code Playgroud) unittest是否有可能选择跳过测试的总测试次数和运行次数.并且运行后测试次数失败(我知道它可以在输出中看到).如果我想以编程方式将它转换为json,我想将它转储到json中
多谢
我使用 Python 3.6.5 和以下库:
现在我需要在测试失败的情况下捕获屏幕截图,所以我故意放了一个错误的陈述
self.driver.find_element_by_css_selector('test')。
我正在使用sys.exc_info(). 但是当我使用命令执行以下代码时:py.test untitled.py或者python3 -m unittest untitled.py它没有捕获它。
代码:
import sys, time, unittest2
from selenium import webdriver
class FB360(unittest2.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
def test_user_can_login(self):
self.driver.get('https://www.google.co.in')
self.driver.find_element_by_css_selector('test')
def tearDown(self):
print(sys.exc_info())
if sys.exc_info()[0]:
test_method_name = self._testMethodName
self.driver.save_screenshot(test_method_name + str(time.time()) + '.png')
self.driver.quit()
if __name__ == '__main__':
unittest2.main()
Run Code Online (Sandbox Code Playgroud)
开/关:
(无,无,无)
乙
================================================== ==================== 错误:test_user_can_login (untitled.FB360)
回溯(最近一次通话):文件“/Volumes/Harry/Projects/pythonScreenshots/untitled.py”,第 11 行,在 test_user_can_login self.driver.find_element_by_css_selector('test') 文件“/Library/Frameworks/Python.framework/ Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 498, in find_element_by_css_selector …
python ×7
unit-testing ×3
jython ×1
nose ×1
pytest ×1
python-3.6 ×1
screenshot ×1
selenium ×1
webdriver ×1