下面是類似的方法來@craigds answer,但目錄的支持和更好的兼容性與Python 3:
@property
def failureException(self):
class MyFailureException(AssertionError):
def __init__(self_, *args, **kwargs):
screenshot_dir = 'reports/screenshots'
if not os.path.exists(screenshot_dir):
os.makedirs(screenshot_dir)
self.driver.save_screenshot('{0}/{1}.png'.format(screenshot_dir, self.id()))
return super(MyFailureException, self_).__init__(*args, **kwargs)
MyFailureException.__name__ = AssertionError.__name__
return MyFailureException
這本blog竟是找到。
我多用進一步擴展它:
parser.add_argument("-r", "--reports-dir", action="store", dest="dir", help="Directory to save screenshots.", default="reports")
這樣的目錄可以動態地或者通過系統變量或傳遞的參數指定:
screenshot_dir = os.environ.get('REPORTS_DIR', self.args.dir) + '/screenshots'
這是特別有用,如果你還有其他的包裝來運行你的所有腳本,比如基類。
哇,什麼黑客。包裝在一個函數中的異常類包裝在一個屬性中,所有這些都將'TestCase'實例放入異常的'__init __()'方法中。醜,但至少它的作品! – kindall