jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/330281 )
Change subject: Fix HttpServerProblemTestCase.test_502 failing
......................................................................
Fix HttpServerProblemTestCase.test_502 failing
HttpbinTestCase class moved to aspects.py, pytest_httpbin is now used
instead of httpbin.org site only if test case inherits HttpbinTestCase
Bug: T154452
Change-Id: Ica26594a553de2e4555ffba56056141a56c3c6c5
---
M tests/aspects.py
M tests/http_tests.py
2 files changed, 63 insertions(+), 61 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/aspects.py b/tests/aspects.py
index 305c4be..993f9cd 100644
--- a/tests/aspects.py
+++ b/tests/aspects.py
@@ -7,7 +7,7 @@
mixin to show cache usage is included.
"""
#
-# (C) Pywikibot team, 2014-2015
+# (C) Pywikibot team, 2014-2017
#
# Distributed under the terms of the MIT license.
#
@@ -29,7 +29,6 @@
UITestCase:
Not integrated; direct subclass of unittest.TestCase.
"""
-import imp
import inspect
import itertools
import os
@@ -60,6 +59,16 @@
add_metaclass, execute_pwb, DrySite, DryRequest,
WarningSourceSkipContextManager, AssertAPIErrorContextManager,
)
+
+try:
+ import pytest_httpbin
+ optional_pytest_httpbin_cls_decorator = pytest_httpbin.use_class_based_httpbin
+except ImportError:
+ pytest_httpbin = None
+
+ def optional_pytest_httpbin_cls_decorator(f):
+ """Empty decorator in case pytest_httpbin is not
installed."""
+ return f
OSWIN32 = (sys.platform == 'win32')
@@ -484,13 +493,10 @@
if not hasattr(cls, 'sites'):
return
- # Check is pytest is used and pytest_httpbin module is installed.
- if hasattr(sys, '_test_runner_pytest'):
- try:
- imp.find_module('pytest_httpbin')
- httpbin_used = True
- except ImportError:
- httpbin_used = False
+ if issubclass(cls, HttpbinTestCase):
+ # If test uses httpbin, then check is pytest test runner is used
+ # and pytest_httpbin module is installed.
+ httpbin_used = hasattr(sys, '_test_runner_pytest') and
pytest_httpbin
else:
httpbin_used = False
@@ -1658,3 +1664,43 @@
CapturingTestCase.process_assert,
CapturingTestCase.patch_assert,
]
+
+
+@optional_pytest_httpbin_cls_decorator
+class HttpbinTestCase(TestCase):
+
+ """
+ Custom test case class, which allows doing dry httpbin tests using pytest-httpbin.
+
+ Test cases, which use httpbin, need to inherit this class.
+ """
+
+ sites = {
+ 'httpbin': {
+ 'hostname': 'httpbin.org',
+ },
+ }
+
+ def get_httpbin_url(self, path=''):
+ """
+ Return url of httpbin.
+
+ If pytest is used, returns url of local httpbin server.
+ Otherwise, returns:
http://httpbin.org
+ """
+ if hasattr(self, 'httpbin'):
+ return self.httpbin.url + path
+ else:
+ return 'http://httpbin.org' + path
+
+ def get_httpbin_hostname(self):
+ """
+ Return httpbin hostname.
+
+ If pytest is used, returns hostname of local httpbin server.
+ Otherwise, returns: httpbin.org
+ """
+ if hasattr(self, 'httpbin'):
+ return '{0}:{1}'.format(self.httpbin.host, self.httpbin.port)
+ else:
+ return 'httpbin.org'
diff --git a/tests/http_tests.py b/tests/http_tests.py
index 72db94c..ca90f76 100644
--- a/tests/http_tests.py
+++ b/tests/http_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Tests for http module."""
#
-# (C) Pywikibot team, 2014-2015
+# (C) Pywikibot team, 2014-2017
#
# Distributed under the terms of the MIT license.
#
@@ -25,57 +25,13 @@
)
from tests import join_images_path
-from tests.aspects import unittest, TestCase, DeprecationTestCase, require_modules
-
-try:
- import pytest_httpbin
- optional_pytest_httpbin_cls_decorator = pytest_httpbin.use_class_based_httpbin
-except ImportError:
- pytest_httpbin = None
-
- def optional_pytest_httpbin_cls_decorator(f):
- """Empty decorator in case pytest_httpbin is not
installed."""
- return f
-
-
-@optional_pytest_httpbin_cls_decorator
-class HttpbinTestCase(TestCase):
-
- """
- Custom test case class, which allows doing dry httpbin tests using pytest-httpbin.
-
- Test cases, which use httpbin, need to inherit this class.
- """
-
- sites = {
- 'httpbin': {
- 'hostname': 'httpbin.org',
- },
- }
-
- def get_httpbin_url(self, path=''):
- """
- Return url of httpbin.
-
- If pytest is used, returns url of local httpbin server.
- Otherwise, returns:
http://httpbin.org
- """
- if hasattr(self, 'httpbin'):
- return self.httpbin.url + path
- else:
- return 'http://httpbin.org' + path
-
- def get_httpbin_hostname(self):
- """
- Return httpbin hostname.
-
- If pytest is used, returns hostname of local httpbin server.
- Otherwise, returns: httpbin.org
- """
- if hasattr(self, 'httpbin'):
- return '{0}:{1}'.format(self.httpbin.host, self.httpbin.port)
- else:
- return 'httpbin.org'
+from tests.aspects import (
+ unittest,
+ TestCase,
+ DeprecationTestCase,
+ HttpbinTestCase,
+ require_modules,
+)
class HttpTestCase(TestCase):
--
To view, visit
https://gerrit.wikimedia.org/r/330281
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ica26594a553de2e4555ffba56056141a56c3c6c5
Gerrit-PatchSet: 5
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Phantom42 <nikitav30(a)gmail.com>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Phantom42 <nikitav30(a)gmail.com>
Gerrit-Reviewer: jenkins-bot <>