jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1314631?usp=email )
Change subject: tests: improvements for HttpbinTestCase ......................................................................
tests: improvements for HttpbinTestCase
- use staticmethod with fetch method because class or instance is not used - remove get_httpbin_hostname because hostname class attribure can be used - remove get_httpbin_url method and replace it with httpbin class property - update method usages
Change-Id: I5a792863f017a174c3f73e339daf6af6b57af364 --- M tests/aspects.py M tests/http_tests.py 2 files changed, 20 insertions(+), 27 deletions(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/tests/aspects.py b/tests/aspects.py index f2945f1..3b4efea 100644 --- a/tests/aspects.py +++ b/tests/aspects.py @@ -39,6 +39,7 @@ from pywikibot.tools import ( # noqa: F401 (used by eval()) PYTHON_VERSION, MediaWikiVersion, + classproperty, suppress_warnings, ) from tests import ( @@ -1734,15 +1735,13 @@
hostname = 'httpbin.org'
- def get_httpbin_url(self, path=''): - """Return url of httpbin.""" - return 'http://httpbin.org' + path + @classproperty + def httpbin(cls) -> str: + """Return URL of httpbin.""" + return f'http://%7Bcls.hostname%7D'
- def get_httpbin_hostname(self) -> str: - """Return httpbin hostname.""" - return 'httpbin.org' - - def fetch(self, *args, **kwargs): + @staticmethod + def fetch(*args, **kwargs): """Delegate http request to http.fetch but skip on ServerError.""" with skipping(ServerError): return http.fetch(*args, **kwargs) diff --git a/tests/http_tests.py b/tests/http_tests.py index 860e183..3185b8a 100755 --- a/tests/http_tests.py +++ b/tests/http_tests.py @@ -132,7 +132,7 @@ Server504Error, r'Server ([^:]+|[^:]+:[0-9]+)' r' timed out'): - http.fetch(self.get_httpbin_url('/status/504')) + http.fetch(self.httpbin + '/status/504')
def test_server_not_found(self) -> None: """Test server not found exception.""" @@ -160,8 +160,8 @@ HTTPStatus.MOVED_PERMANENTLY.value) self.assertIn('//en.wikipedia.org/wiki/Main_Page', r.url)
- r = http.fetch( - self.get_httpbin_url('/redirect-to?url=https://www.wikidata.org')) + r = http.fetch(self.httpbin + + 'redirect-to?url=https://www.wikidata.org') self.assertIsNotEmpty(r.history) self.assertEqual(r.history[0].status_code, HTTPStatus.FOUND.value) self.assertEqual(r.history[-1].status_code, @@ -251,44 +251,38 @@
def test_existing_headers(self) -> None: """Test fake_user_agent with existing headers.""" - r = self.fetch(self.get_httpbin_url('/status/200'), + r = self.fetch(self.httpbin + '/status/200', headers={'user-agent': 'EXISTING'}) self.assertEqual(r.request.headers['user-agent'], 'EXISTING')
def test_argument_values_changes(self) -> None: """Test fake_user_agent with argument value changes.""" - r = self.fetch(self.get_httpbin_url('/status/200'), - use_fake_user_agent=True) + url = self.httpbin + '/status/200' + r = self.fetch(url, use_fake_user_agent=True) self.assertNotEqual(r.request.headers['user-agent'], http.user_agent())
- r = self.fetch(self.get_httpbin_url('/status/200'), - use_fake_user_agent=False) + r = self.fetch(url, use_fake_user_agent=False) self.assertEqual(r.request.headers['user-agent'], http.user_agent())
- r = self.fetch(self.get_httpbin_url('/status/200'), - use_fake_user_agent='ARBITRARY') + r = self.fetch(url, use_fake_user_agent='ARBITRARY') self.assertEqual(r.request.headers['user-agent'], 'ARBITRARY')
def test_empty_value(self) -> None: """Test fake_user_agent with empty value.""" with self.assertRaisesRegex(ValueError, 'Invalid parameter: use_fake_user_agent'): - self.fetch(self.get_httpbin_url('/status/200'), - use_fake_user_agent='') + self.fetch(self.httpbin + '/status/200', use_fake_user_agent='')
def test_parameter_set_to_none(self) -> None: """Test fake_user_agent with parameter wrongly set to None.""" with self.assertRaisesRegex(ValueError, 'Invalid parameter: use_fake_user_agent'): - self.fetch(self.get_httpbin_url('/status/200'), - use_fake_user_agent=None) + self.fetch(self.httpbin + '/status/200', use_fake_user_agent=None)
def test_overridden_domains(self) -> None: """Test fake_user_agent with manually overridden domains.""" - config.fake_user_agent_exceptions = { - self.get_httpbin_hostname(): 'OVERRIDDEN'} - r = self.fetch(self.get_httpbin_url('/status/200'), - use_fake_user_agent=False) + config.fake_user_agent_exceptions = {self.hostname: 'OVERRIDDEN'} + r = self.fetch(self.httpbin + '/status/200', use_fake_user_agent=False) self.assertEqual(r.request.headers['user-agent'], 'OVERRIDDEN')
@@ -496,7 +490,7 @@ def setUp(self) -> None: """Set up tests.""" super().setUp() - self.url = self.get_httpbin_url('/get') + self.url = self.httpbin + '/get'
def test_no_params(self) -> None: """Test fetch method with no parameters."""
pywikibot-commits@lists.wikimedia.org