pgadmin4/web/regression/feature_utils/base_feature_test.py

97 lines
3.0 KiB
Python
Raw Normal View History

2017-03-16 09:27:55 -05:00
##########################################################################
#
# pgAdmin 4 - PostgreSQL Tools
#
# Copyright (C) 2013 - 2017, The pgAdmin Development Team
# This software is released under the PostgreSQL Licence
#
##########################################################################
import errno
import sys
import os
from datetime import datetime
import config as app_config
from pgadmin.utils.route import BaseTestGenerator
from regression.feature_utils.pgadmin_page import PgadminPage
class BaseFeatureTest(BaseTestGenerator):
CURRENT_PATH = os.path.dirname(os.path.realpath(__file__))
def setUp(self):
if app_config.SERVER_MODE:
self.skipTest("Currently, config is set to start pgadmin in server mode. "
"This test doesn't know username and password so doesn't work in server mode")
self.page = PgadminPage(self.driver, app_config)
try:
self.page.wait_for_app()
self.page.wait_for_spinner_to_disappear()
self.page.reset_layout()
self.page.wait_for_spinner_to_disappear()
self.before()
except:
self._screenshot()
raise
def runTest(self):
pass
def before(self):
pass
def after(self):
pass
def tearDown(self):
python2_failures = hasattr(self, "_resultForDoCleanups") and self.current_test_failed()
python3_failures = hasattr(self, '_outcome') and self.any_step_failed()
if python2_failures or python3_failures:
self._screenshot()
self.after()
def any_step_failed(self):
for step in self._outcome.errors:
if step[1] is not None:
return True
return False
def current_test_failed(self):
all_failures = self._resultForDoCleanups.errors + self._resultForDoCleanups.failures
for failure in all_failures:
if failure[0] == self:
return True
return False
def _screenshot(self):
screenshots_directory = '{0}/../screenshots'.format(self.CURRENT_PATH)
screenshots_server_directory = '{0}/{1}'.format(screenshots_directory,
self.server["name"].replace(" ", "_"))
self.ensure_directory_exists(screenshots_directory)
self.ensure_directory_exists(screenshots_server_directory)
date = datetime.now().strftime("%Y.%m.%d_%H.%M.%S")
python_version = sys.version.split(" ")[0]
self.page.driver.save_screenshot(
'{0}/{1}-{2}-Python-{3}.png'.format(screenshots_server_directory,
self.__class__.__name__,
date,
python_version))
def ensure_directory_exists(self, path):
try:
os.mkdir(path)
except OSError as e:
if e.errno == errno.EEXIST:
pass
else:
raise