summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2019-08-03 13:23:36 +0200
committerGitHub <noreply@github.com>2019-08-03 13:23:36 +0200
commit333e54943d945a1afcb2ac5a82dd6edcf052be2d (patch)
treea3cd0090ad19b1aa392fa0a7b11c0c48b612fd5f
parentd24e7948ebd8aaa25a1907c225e1d2d3de37c17c (diff)
[fix] fix monkey patch in test_webapp.py (#1667)
at the end of test_webapp.py, the monkey patch of searx.search.Search was not revert which lead to side effects on other tests close #1663
-rw-r--r--searx/testing.py12
-rw-r--r--tests/unit/test_webapp.py13
2 files changed, 19 insertions, 6 deletions
diff --git a/searx/testing.py b/searx/testing.py
index 08a53e3f4..a3616dc12 100644
--- a/searx/testing.py
+++ b/searx/testing.py
@@ -80,6 +80,18 @@ class SearxTestCase(TestCase):
layer = SearxTestLayer
+ def setattr4test(self, obj, attr, value):
+ """
+ setattr(obj, attr, value)
+ but reset to the previous value in the cleanup.
+ """
+ previous_value = getattr(obj, attr)
+
+ def cleanup_patch():
+ setattr(obj, attr, previous_value)
+ self.addCleanup(cleanup_patch)
+ setattr(obj, attr, value)
+
if __name__ == '__main__':
import sys
diff --git a/tests/unit/test_webapp.py b/tests/unit/test_webapp.py
index dcf8b583c..72ace4850 100644
--- a/tests/unit/test_webapp.py
+++ b/tests/unit/test_webapp.py
@@ -15,7 +15,7 @@ class ViewsTestCase(SearxTestCase):
self.app = webapp.app.test_client()
# set some defaults
- self.test_results = [
+ test_results = [
{
'content': 'first test content',
'title': 'First Test',
@@ -47,25 +47,25 @@ class ViewsTestCase(SearxTestCase):
]
def search_mock(search_self, *args):
- search_self.result_container = Mock(get_ordered_results=lambda: self.test_results,
+ search_self.result_container = Mock(get_ordered_results=lambda: test_results,
answers=set(),
corrections=set(),
suggestions=set(),
infoboxes=[],
unresponsive_engines=set(),
- results=self.test_results,
+ results=test_results,
results_number=lambda: 3,
- results_length=lambda: len(self.test_results),
+ results_length=lambda: len(test_results),
get_timings=lambda: timings)
- Search.search = search_mock
+ self.setattr4test(Search, 'search', search_mock)
def get_current_theme_name_mock(override=None):
if override:
return override
return 'legacy'
- webapp.get_current_theme_name = get_current_theme_name_mock
+ self.setattr4test(webapp, 'get_current_theme_name', get_current_theme_name_mock)
self.maxDiff = None # to see full diffs
@@ -91,6 +91,7 @@ class ViewsTestCase(SearxTestCase):
result_dict = json.loads(result.data.decode('utf-8'))
self.assertEqual('test', result_dict['query'])
+ self.assertEqual(len(result_dict['results']), 2)
self.assertEqual(result_dict['results'][0]['content'], 'first test content')
self.assertEqual(result_dict['results'][0]['url'], 'http://first.test.xyz')