Fixed WebUI tests. Added new tests.
This commit is contained in:
parent
29da07cda8
commit
e4abc9b157
@ -4,9 +4,9 @@ import page
|
||||
|
||||
|
||||
class DataCentersPage(page.Page):
|
||||
page = None
|
||||
|
||||
def create_data_center(self, name):
|
||||
self.Refresh()
|
||||
|
||||
self.Button('Create Windows Data Center').Click()
|
||||
|
||||
@ -14,14 +14,12 @@ class DataCentersPage(page.Page):
|
||||
xpath = "//input[@value='Create']"
|
||||
self.Button(xpath).Click()
|
||||
|
||||
return self
|
||||
|
||||
def delete_data_center(self, name):
|
||||
self.Refresh()
|
||||
|
||||
link = self.Link(name).Address()
|
||||
datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
||||
|
||||
print 'Data Center ID: ' + datacenter_id
|
||||
|
||||
xpath = ".//*[@id='windc__row__%s']/td[4]/div/a[2]" % datacenter_id
|
||||
self.Button(xpath).Click()
|
||||
|
||||
@ -30,9 +28,27 @@ class DataCentersPage(page.Page):
|
||||
|
||||
self.Button("Delete Data Center").Click()
|
||||
|
||||
return self
|
||||
|
||||
def select_data_center(self, name):
|
||||
self.Link(name).Click()
|
||||
page = ServicesPage(self.driver)
|
||||
return page
|
||||
|
||||
def deploy_data_center(self, name):
|
||||
self.Refresh()
|
||||
|
||||
link = self.Link(name).Address()
|
||||
datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
||||
|
||||
xpath = ".//*[@id='windc__row__%s']/td[4]/div/a[2]" % datacenter_id
|
||||
self.Button(xpath).Click()
|
||||
|
||||
button_id = "windc__row_%s__action_deploy" % datacenter_id
|
||||
self.Button(button_id).Click()
|
||||
|
||||
def get_datacenter_status(self, name):
|
||||
self.Navigate('Windows Data Centers')
|
||||
link = self.Link(name).Address()
|
||||
datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
||||
|
||||
xpath = ".//*[@id='windc__row__%s']/td[3]" % datacenter_id
|
||||
return self.TableCell(xpath).Text()
|
||||
|
@ -1,16 +1,38 @@
|
||||
import logging
|
||||
from selenium.webdriver.support.ui import Select
|
||||
logging.basicConfig()
|
||||
LOG = logging.getLogger(' Page object: ')
|
||||
|
||||
|
||||
class TableCellClass:
|
||||
table = None
|
||||
|
||||
def __init__(self, obj):
|
||||
if not obj:
|
||||
LOG.error('TableCell does not found')
|
||||
self.table = obj
|
||||
|
||||
def Text(self):
|
||||
if self.table:
|
||||
return self.table.text()
|
||||
else:
|
||||
return ''
|
||||
|
||||
|
||||
class ButtonClass:
|
||||
button = None
|
||||
|
||||
def __init__(self, obj):
|
||||
if not obj:
|
||||
LOG.error('Button does not found')
|
||||
self.button = obj
|
||||
|
||||
def Click(self):
|
||||
self.button.click()
|
||||
if self.button:
|
||||
self.button.click()
|
||||
|
||||
def isPresented(self):
|
||||
if self.button != None:
|
||||
if self.button:
|
||||
return True
|
||||
return False
|
||||
|
||||
@ -19,60 +41,84 @@ class LinkClass:
|
||||
link = None
|
||||
|
||||
def __init__(self, obj):
|
||||
if not obj:
|
||||
LOG.error('Link does not found')
|
||||
self.link = obj
|
||||
|
||||
def Click(self):
|
||||
self.link.click()
|
||||
if self.link:
|
||||
self.link.click()
|
||||
|
||||
def isPresented(self):
|
||||
if self.link != None:
|
||||
if self.link:
|
||||
return True
|
||||
return False
|
||||
|
||||
def Address(self):
|
||||
return self.link.get_attribute('href')
|
||||
if self.link:
|
||||
return self.link.get_attribute('href')
|
||||
else:
|
||||
return ''
|
||||
|
||||
|
||||
class EditBoxClass:
|
||||
|
||||
def __init__(self, obj):
|
||||
if not obj:
|
||||
LOG.error('EditBox does not found')
|
||||
self.edit = obj
|
||||
|
||||
def isPresented(self):
|
||||
if self.edit != None:
|
||||
if self.edit:
|
||||
return True
|
||||
return False
|
||||
|
||||
def Set(self, value):
|
||||
self.edit.clear()
|
||||
self.edit.send_keys(value)
|
||||
if self.edit:
|
||||
self.edit.clear()
|
||||
self.edit.send_keys(value)
|
||||
|
||||
def Text(self):
|
||||
return self.edit.get_text()
|
||||
if self.edit:
|
||||
return self.edit.get_text()
|
||||
else:
|
||||
return ''
|
||||
|
||||
|
||||
class DropDownListClass:
|
||||
select = None
|
||||
|
||||
def __init__(self, obj):
|
||||
if not obj:
|
||||
LOG.error('DropDownList does not found')
|
||||
self.select = obj
|
||||
|
||||
def isPresented(self):
|
||||
if self.select != None:
|
||||
if self.select is not None:
|
||||
return True
|
||||
return False
|
||||
|
||||
def Set(self, value):
|
||||
self.select.select_by_visible_text(value)
|
||||
if self.select:
|
||||
Select(self.select).select_by_visible_text(value)
|
||||
|
||||
def Text(self):
|
||||
return self.select.get_text()
|
||||
if self.select:
|
||||
return self.select.get_text()
|
||||
else:
|
||||
return ''
|
||||
|
||||
|
||||
error_msg = """
|
||||
Object with parameter: %s
|
||||
does not found on page.
|
||||
"""
|
||||
|
||||
|
||||
class Page:
|
||||
|
||||
driver = None
|
||||
timeout = 300
|
||||
timeout = 30
|
||||
|
||||
def __init__(self, driver):
|
||||
driver.set_page_load_timeout(30)
|
||||
@ -82,7 +128,7 @@ class Page:
|
||||
def _find_element(self, parameter):
|
||||
obj = None
|
||||
k = 0
|
||||
while (obj == None and k < self.timeout):
|
||||
while (obj is None and k < self.timeout):
|
||||
k += 1
|
||||
try:
|
||||
obj = self.driver.find_element_by_name(parameter)
|
||||
@ -105,11 +151,20 @@ class Page:
|
||||
except:
|
||||
pass
|
||||
|
||||
return obj
|
||||
LOG.error(error_msg % parameter)
|
||||
return None
|
||||
|
||||
def Open(self, url):
|
||||
self.driver.get(url)
|
||||
|
||||
def Refresh(self):
|
||||
self.driver.refresh()
|
||||
|
||||
def TableCell(self, name):
|
||||
obj = self._find_element(name)
|
||||
table = TableCellClass(obj)
|
||||
return table
|
||||
|
||||
def Button(self, name):
|
||||
obj = self._find_element(name)
|
||||
button = ButtonClass(obj)
|
||||
|
@ -5,19 +5,20 @@ import re
|
||||
class ServicesPage(page.Page):
|
||||
|
||||
def create_service(self, service_type, parameters):
|
||||
self.Refresh()
|
||||
|
||||
self.Button('services__action_CreateService').Click()
|
||||
self.DropDownList('0-service').Set(service_type)
|
||||
self.Button('wizard_goto_step').Click()
|
||||
|
||||
for parameter in parameters:
|
||||
self.EditBox(parameter.key).Set(parameter.value)
|
||||
for key in parameters:
|
||||
self.EditBox(key).Set(parameters[key])
|
||||
|
||||
self.Button("//input[@value='Create']").Click()
|
||||
|
||||
return self
|
||||
|
||||
def delete_service(self, name):
|
||||
self.Refresh()
|
||||
|
||||
link = self.Link(name).Address()
|
||||
|
||||
service_id = re.search('windc/(\S+)', link).group(0)[6:-1]
|
||||
@ -29,5 +30,3 @@ class ServicesPage(page.Page):
|
||||
self.Button(button_id).Click()
|
||||
|
||||
self.Button("Delete Service").Click()
|
||||
|
||||
return self
|
||||
|
@ -5,19 +5,7 @@ from login_page import LoginPage
|
||||
from datacenters_page import DataCentersPage
|
||||
from selenium import webdriver
|
||||
|
||||
|
||||
class SanityTests(unittest2.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
driver = webdriver.Firefox()
|
||||
self.page = LoginPage(driver)
|
||||
self.page.login()
|
||||
self.page.Navigate('Project:Windows Data Centers')
|
||||
self.page = DataCentersPage(driver)
|
||||
|
||||
def tearDown(self):
|
||||
self.page.driver.close()
|
||||
|
||||
"""
|
||||
def test_01_create_data_center(self):
|
||||
self.page.create_data_center('dc1')
|
||||
assert self.page.Link('dc1').isPresented()
|
||||
@ -27,25 +15,42 @@ class SanityTests(unittest2.TestCase):
|
||||
assert not self.page.Link('dc1').isPresented()
|
||||
|
||||
def test_03_create_data_centers(self):
|
||||
for i in range(1, 20):
|
||||
for i in range(1, 10):
|
||||
name = 'datacenter' + str(i)
|
||||
self.page.create_data_center(name)
|
||||
assert self.page.Link(name).isPresented()
|
||||
|
||||
def test_04_delete_data_centers(self):
|
||||
self.page.delete_data_center('datacenter1')
|
||||
self.page.delete_data_center('datacenter20')
|
||||
self.page.delete_data_center('datacenter9')
|
||||
assert not self.page.Link('datacenter1').isPresented()
|
||||
assert not self.page.Link('datacenter20').isPresented()
|
||||
assert not self.page.Link('datacenter9').isPresented()
|
||||
|
||||
for i in range(2, 19):
|
||||
for i in range(2, 9):
|
||||
name = 'datacenter' + str(i)
|
||||
assert self.page.Link(name).isPresented()
|
||||
"""
|
||||
|
||||
|
||||
class SanityTests(unittest2.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(self):
|
||||
driver = webdriver.Firefox()
|
||||
self.page = LoginPage(driver)
|
||||
self.page.login()
|
||||
self.page.Navigate('Project:Windows Data Centers')
|
||||
self.page = DataCentersPage(driver)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(self):
|
||||
self.page.driver.close()
|
||||
|
||||
def test_05_create_service_ad(self):
|
||||
name = 'dc001.local'
|
||||
self.page.create_data_center('test')
|
||||
self.page.select_data_center('test')
|
||||
self.page.Navigate('Windows Data Centers')
|
||||
self.page.create_data_center('test05')
|
||||
self.page = self.page.select_data_center('test05')
|
||||
|
||||
ad_parameters = {'1-dc_name': name,
|
||||
'1-dc_count': 1,
|
||||
@ -54,7 +59,99 @@ class SanityTests(unittest2.TestCase):
|
||||
self.page.create_service('Active Directory', ad_parameters)
|
||||
|
||||
assert self.page.Link(name).isPresented()
|
||||
"""
|
||||
def test_06_create_service_ad_two_instances(self):
|
||||
name = 'dc002.local'
|
||||
self.page.Navigate('Windows Data Centers')
|
||||
self.page.create_data_center('test06')
|
||||
self.page = self.page.select_data_center('test06')
|
||||
|
||||
ad_parameters = {'1-dc_name': name,
|
||||
'1-dc_count': 2,
|
||||
'1-adm_password': 'P@ssw0rd2',
|
||||
'1-recovery_password': 'P@ssw0rd'}
|
||||
self.page.create_service('Active Directory', ad_parameters)
|
||||
|
||||
assert self.page.Link(name).isPresented()
|
||||
|
||||
def test_07_create_service_ad_with_iis(self):
|
||||
ad_name = 'dc003.local'
|
||||
self.page.Navigate('Windows Data Centers')
|
||||
self.page.create_data_center('test07')
|
||||
self.page = self.page.select_data_center('test07')
|
||||
|
||||
ad_parameters = {'1-dc_name': ad_name,
|
||||
'1-dc_count': 3,
|
||||
'1-adm_password': 'P@ssw0rd',
|
||||
'1-recovery_password': 'P@ssw0rd2'}
|
||||
self.page.create_service('Active Directory', ad_parameters)
|
||||
|
||||
assert self.page.Link(ad_name).isPresented()
|
||||
|
||||
iis_name = 'iis_server1'
|
||||
iis_parameters = {'1-iis_name': iis_name,
|
||||
'1-adm_password': 'P@ssw0rd',
|
||||
'1-iis_domain': 'dc003.local',
|
||||
'1-domain_user_name': 'Administrator',
|
||||
'1-domain_user_password': 'P@ssw0rd'}
|
||||
self.page.create_service('Internet Information Services',
|
||||
iis_parameters)
|
||||
|
||||
assert self.page.Link(iis_name).isPresented()
|
||||
|
||||
iis_name = 'iis_server2'
|
||||
iis_parameters = {'1-iis_name': iis_name,
|
||||
'1-adm_password': 'P@ssw0rd',
|
||||
'1-iis_domain': 'dc003.local',
|
||||
'1-domain_user_name': 'Administrator',
|
||||
'1-domain_user_password': 'P@ssw0rd'}
|
||||
self.page.create_service('Internet Information Services',
|
||||
iis_parameters)
|
||||
|
||||
assert self.page.Link(iis_name).isPresented()
|
||||
|
||||
iis_name = 'iis_server3'
|
||||
iis_parameters = {'1-iis_name': iis_name,
|
||||
'1-adm_password': 'P@ssw0rd',
|
||||
'1-iis_domain': 'dc003.local',
|
||||
'1-domain_user_name': 'Administrator',
|
||||
'1-domain_user_password': 'P@ssw0rd'}
|
||||
self.page.create_service('Internet Information Services',
|
||||
iis_parameters)
|
||||
|
||||
assert self.page.Link(iis_name).isPresented()
|
||||
|
||||
def test_08_deploy_data_center(self):
|
||||
ad_name = 'AD.net'
|
||||
self.page.Navigate('Windows Data Centers')
|
||||
self.page.create_data_center('test08')
|
||||
self.page = self.page.select_data_center('test08')
|
||||
|
||||
ad_parameters = {'1-dc_name': ad_name,
|
||||
'1-dc_count': 2,
|
||||
'1-adm_password': 'P@ssw0rd',
|
||||
'1-recovery_password': 'P@ssw0rd2'}
|
||||
self.page.create_service('Active Directory', ad_parameters)
|
||||
|
||||
assert self.page.Link(ad_name).isPresented()
|
||||
|
||||
iis_parameters = {'1-iis_name': 'iis_server',
|
||||
'1-adm_password': 'P@ssw0rd',
|
||||
'1-iis_domain': 'AD.net',
|
||||
'1-domain_user_name': 'Administrator',
|
||||
'1-domain_user_password': 'P@ssw0rd'}
|
||||
self.page.create_service('Internet Information Services',
|
||||
iis_parameters)
|
||||
|
||||
assert self.page.Link('iis_server').isPresented()
|
||||
|
||||
self.page.Navigate('Windows Data Centers')
|
||||
self.page = DataCentersPage(self.page.driver)
|
||||
self.page.deploy_data_center('test08')
|
||||
|
||||
status = self.page.get_datacenter_status('test08')
|
||||
assert 'Deploy in progress' in status
|
||||
"""
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest2.main()
|
||||
|
Loading…
Reference in New Issue
Block a user