Merge "Add html source code on test failure for debugging"
This commit is contained in:
commit
5cdd490260
@ -12,6 +12,7 @@
|
||||
|
||||
import os
|
||||
import time
|
||||
import traceback
|
||||
import uuid
|
||||
|
||||
import testtools
|
||||
@ -43,6 +44,8 @@ def gen_random_resource_name(resource="", timestamp=True):
|
||||
|
||||
class BaseTestCase(testtools.TestCase):
|
||||
|
||||
CONFIG = config.get_config()
|
||||
|
||||
def setUp(self):
|
||||
if os.environ.get('INTEGRATION_TESTS', False):
|
||||
# Start a virtual display server for running the tests headless.
|
||||
@ -57,14 +60,38 @@ class BaseTestCase(testtools.TestCase):
|
||||
# Start the Selenium webdriver and setup configuration.
|
||||
self.driver = webdriver.WebDriverWrapper()
|
||||
self.driver.maximize_window()
|
||||
self.conf = config.get_config()
|
||||
self.driver.implicitly_wait(self.conf.selenium.implicit_wait)
|
||||
self.driver.set_page_load_timeout(self.conf.selenium.page_timeout)
|
||||
self.driver.implicitly_wait(self.CONFIG.selenium.implicit_wait)
|
||||
self.driver.set_page_load_timeout(
|
||||
self.CONFIG.selenium.page_timeout)
|
||||
self.addOnException(self._dump_page_html_source)
|
||||
else:
|
||||
msg = "The INTEGRATION_TESTS env variable is not set."
|
||||
raise self.skipException(msg)
|
||||
super(BaseTestCase, self).setUp()
|
||||
|
||||
def _dump_page_html_source(self, exc_info):
|
||||
content = None
|
||||
try:
|
||||
pg_source = self._get_page_html_source()
|
||||
content = testtools.content.Content(
|
||||
testtools.content_type.ContentType('text', 'html'),
|
||||
lambda: pg_source)
|
||||
except Exception:
|
||||
exc_traceback = traceback.format_exc()
|
||||
content = testtools.content.text_content(exc_traceback)
|
||||
finally:
|
||||
self.addDetail("PageHTMLSource.html", content)
|
||||
|
||||
def _get_page_html_source(self):
|
||||
"""Gets html page source.
|
||||
|
||||
self.driver.page_source is not used on purpose because it does not
|
||||
display html code generated/changed by javascript.
|
||||
"""
|
||||
|
||||
html_elem = self.driver.find_element_by_tag_name("html")
|
||||
return html_elem.get_attribute("innerHTML").encode("UTF-8")
|
||||
|
||||
def tearDown(self):
|
||||
if os.environ.get('INTEGRATION_TESTS', False):
|
||||
self.driver.quit()
|
||||
@ -75,11 +102,15 @@ class BaseTestCase(testtools.TestCase):
|
||||
|
||||
class TestCase(BaseTestCase):
|
||||
|
||||
TEST_USER_NAME = BaseTestCase.CONFIG.identity.username
|
||||
TEST_PASSWORD = BaseTestCase.CONFIG.identity.password
|
||||
|
||||
def setUp(self):
|
||||
super(TestCase, self).setUp()
|
||||
self.login_pg = loginpage.LoginPage(self.driver, self.conf)
|
||||
self.login_pg = loginpage.LoginPage(self.driver, self.CONFIG)
|
||||
self.login_pg.go_to_login_page()
|
||||
self.home_pg = self.login_pg.login()
|
||||
self.home_pg = self.login_pg.login(self.TEST_USER_NAME,
|
||||
self.TEST_PASSWORD)
|
||||
|
||||
def tearDown(self):
|
||||
try:
|
||||
@ -90,18 +121,7 @@ class TestCase(BaseTestCase):
|
||||
super(TestCase, self).tearDown()
|
||||
|
||||
|
||||
class AdminTestCase(BaseTestCase):
|
||||
def setUp(self):
|
||||
super(AdminTestCase, self).setUp()
|
||||
self.login_pg = loginpage.LoginPage(self.driver, self.conf)
|
||||
self.login_pg.go_to_login_page()
|
||||
self.home_pg = self.login_pg.login(
|
||||
user=self.conf.identity.admin_username,
|
||||
password=self.conf.identity.admin_password)
|
||||
class AdminTestCase(TestCase):
|
||||
|
||||
def tearDown(self):
|
||||
try:
|
||||
if self.home_pg.is_logged_in:
|
||||
self.home_pg.log_out()
|
||||
finally:
|
||||
super(AdminTestCase, self).tearDown()
|
||||
TEST_USER_NAME = TestCase.CONFIG.identity.admin_username
|
||||
TEST_PASSWORD = TestCase.CONFIG.identity.admin_password
|
||||
|
@ -21,7 +21,7 @@ class TestDashboardHelp(helpers.TestCase):
|
||||
self.home_pg.go_to_help_page()
|
||||
self.home_pg.switch_window()
|
||||
|
||||
self.assertEqual(self.conf.dashboard.help_url,
|
||||
self.assertEqual(self.CONFIG.dashboard.help_url,
|
||||
self.home_pg.get_url_current_page(),
|
||||
"help link did not redirect to the right URL")
|
||||
|
||||
|
@ -21,7 +21,7 @@ class TestLogin(helpers.BaseTestCase):
|
||||
* checks that the user home page loads without error
|
||||
"""
|
||||
def test_login(self):
|
||||
login_pg = loginpage.LoginPage(self.driver, self.conf)
|
||||
login_pg = loginpage.LoginPage(self.driver, self.CONFIG)
|
||||
login_pg.go_to_login_page()
|
||||
home_pg = login_pg.login()
|
||||
if not home_pg.is_logged_in:
|
||||
|
@ -33,11 +33,11 @@ class TestPasswordChange(helpers.TestCase):
|
||||
passwordchange_page = self.home_pg.go_to_settings_changepasswordpage()
|
||||
|
||||
try:
|
||||
passwordchange_page.change_password(self.conf.identity.password,
|
||||
passwordchange_page.change_password(self.TEST_PASSWORD,
|
||||
NEW_PASSWORD)
|
||||
|
||||
self.home_pg = self.login_pg.login(
|
||||
user=self.conf.identity.username, password=NEW_PASSWORD)
|
||||
self.home_pg = self.login_pg.login(user=self.TEST_USER_NAME,
|
||||
password=NEW_PASSWORD)
|
||||
self.assertTrue(self.home_pg.is_logged_in,
|
||||
"Failed to login with new password")
|
||||
finally:
|
||||
@ -51,13 +51,13 @@ class TestPasswordChange(helpers.TestCase):
|
||||
passwordchange_page = self.home_pg.go_to_settings_changepasswordpage()
|
||||
|
||||
try:
|
||||
passwordchange_page.change_password(self.conf.identity.password,
|
||||
passwordchange_page.change_password(self.TEST_PASSWORD,
|
||||
NEW_PASSWORD)
|
||||
self.assertTrue(
|
||||
self.login_pg.is_logout_reason_displayed(),
|
||||
"The logout reason message was not found on the login page")
|
||||
finally:
|
||||
self.login_pg.login(user=self.conf.identity.username,
|
||||
self.login_pg.login(user=self.TEST_USER_NAME,
|
||||
password=NEW_PASSWORD)
|
||||
self._reset_password()
|
||||
self._login()
|
||||
|
@ -28,7 +28,7 @@ class TestSaharaImageRegistry(helpers.TestCase):
|
||||
def test_image_register_unregister(self):
|
||||
"""Test the image registration in Sahara."""
|
||||
image_reg_pg = self.home_pg.go_to_dataprocessing_imageregistrypage()
|
||||
image_reg_pg.register_image(IMAGE_NAME, self.conf.scenario.ssh_user,
|
||||
image_reg_pg.register_image(IMAGE_NAME, self.CONFIG.scenario.ssh_user,
|
||||
"Test description")
|
||||
self.assertTrue(image_reg_pg.is_image_registered(IMAGE_NAME),
|
||||
"Image was not registered.")
|
||||
|
@ -20,7 +20,7 @@ class TestUser(helpers.AdminTestCase):
|
||||
|
||||
def test_create_delete_user(self):
|
||||
users_page = self.home_pg.go_to_identity_userspage()
|
||||
password = self.conf.identity.password
|
||||
password = self.TEST_PASSWORD
|
||||
users_page.create_user(self.USER_NAME, password=password,
|
||||
project='admin', role='admin')
|
||||
self.assertTrue(users_page.is_user_present(self.USER_NAME))
|
||||
|
Loading…
x
Reference in New Issue
Block a user