From a855a48aa294a3b4c7716c745c6ec38d13976b9a Mon Sep 17 00:00:00 2001 From: Martin Baun Date: Wed, 4 Oct 2017 12:18:42 +0200 Subject: [PATCH 1/2] implement NetwellResponse --- netwell/checkers.py | 44 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/netwell/checkers.py b/netwell/checkers.py index 876af72..d6931a3 100644 --- a/netwell/checkers.py +++ b/netwell/checkers.py @@ -93,16 +93,52 @@ class Checker: pass +class NetwellResponse: + def __init__(self, response, url): + self._response = response + self._url = url + + def contains(self, text): + with rule( + 'Checking that {url} response contains {text}'.format( + url=self._url, + text=text)) as outcome: + if text not in self._response.text: + outcome.fail('not found') + + def not_contains(self, text): + with rule( + 'Checking that {url} response is without {text}'.format( + url=self._url, + text=text)) as outcome: + if text in self._response.text: + outcome.fail('found') + + def check(self, func): + with rule( + 'Checking that {url} passes {func}'.format( + url=self._url, + func=func.__name__)) as outcome: + response = self._response + func(response, outcome) + return self + + class URL(Checker): def __init__(self, url): self.url = url - self.response = None + self._response = None def _fetch(self): - if not self.response: - self.response = requests.get(self.url, timeout=10) - return self.response + if not self._response: + self._response = NetwellResponse( + requests.get(self.url, timeout=10), + self.url) + return self._response + + def response(self): + return self._fetch() def redirects_to(self, to_url): with rule( From e147acc21562ae712ea35c831f17b2e3be528059 Mon Sep 17 00:00:00 2001 From: Martin Baun Date: Fri, 6 Oct 2017 11:22:19 +0200 Subject: [PATCH 2/2] NetwellResponseWrapper for implementing simple custom checks --- netwell/checkers.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/netwell/checkers.py b/netwell/checkers.py index d6931a3..6751e3d 100644 --- a/netwell/checkers.py +++ b/netwell/checkers.py @@ -93,34 +93,35 @@ class Checker: pass -class NetwellResponse: - def __init__(self, response, url): - self._response = response - self._url = url +class NetwellResponseWrapper: + def __init__(self, obj): + self.obj = obj + + def __getattr__(self, name): + return getattr(self.obj, name) def contains(self, text): with rule( 'Checking that {url} response contains {text}'.format( - url=self._url, + url=self.url, text=text)) as outcome: - if text not in self._response.text: + if text not in self.text: outcome.fail('not found') def not_contains(self, text): with rule( 'Checking that {url} response is without {text}'.format( - url=self._url, + url=self.url, text=text)) as outcome: - if text in self._response.text: + if text in self.text: outcome.fail('found') def check(self, func): with rule( 'Checking that {url} passes {func}'.format( - url=self._url, + url=self.url, func=func.__name__)) as outcome: - response = self._response - func(response, outcome) + func(self, outcome) return self @@ -132,13 +133,12 @@ def __init__(self, url): def _fetch(self): if not self._response: - self._response = NetwellResponse( - requests.get(self.url, timeout=10), - self.url) + self._response = NetwellResponseWrapper( + requests.get(self.url, timeout=10)) + return self._response - def response(self): - return self._fetch() + response = property(_fetch) def redirects_to(self, to_url): with rule(