X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=functest%2Futils%2Fdecorators.py;h=46ffe35d12d2616ce4eca70fc18be858138ec57c;hb=96481540320550457181696c43a0e2fa34b9273d;hp=99bcef3e64c1512e81ebc813daa70a70d062c44d;hpb=b605fdd304c4e698c64400338394a7b6f9663017;p=functest.git diff --git a/functest/utils/decorators.py b/functest/utils/decorators.py index 99bcef3e6..46ffe35d1 100644 --- a/functest/utils/decorators.py +++ b/functest/utils/decorators.py @@ -1,30 +1,42 @@ #!/usr/bin/env python +# pylint: disable=missing-docstring + +import errno +import os +import urlparse + import mock import requests.sessions -import urlparse def can_dump_request_to_file(method): def dump_preparedrequest(request, **kwargs): + # pylint: disable=unused-argument parseresult = urlparse.urlparse(request.url) if parseresult.scheme == "file": - with open(parseresult.path.replace('/results', ''), 'a') as f: + try: + dirname = os.path.dirname(parseresult.path) + os.makedirs(dirname) + except OSError as ex: + if ex.errno != errno.EEXIST: + raise + with open(parseresult.path, 'a') as dumpfile: headers = "" for key in request.headers: headers += key + " " + request.headers[key] + "\n" message = "{} {}\n{}\n{}\n\n\n".format( request.method, request.url, headers, request.body) - f.write(message) + dumpfile.write(message) return mock.Mock() def patch_request(method, url, **kwargs): with requests.sessions.Session() as session: parseresult = urlparse.urlparse(url) if parseresult.scheme == "file": - with mock.patch.object( - session, 'send', side_effect=dump_preparedrequest): + with mock.patch.object(session, 'send', + side_effect=dump_preparedrequest): return session.request(method=method, url=url, **kwargs) else: return session.request(method=method, url=url, **kwargs)