これは@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
これは実際にこのブログで発見されました。
私はそれをさらに拡張しましたargparse
:
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'
これは、基本クラスのように、すべてのスクリプトを実行するための追加のラッパーがある場合に特に便利です。