Fixed automated tests for web UI.

This commit is contained in:
Timur Nurlygayanov 2013-03-25 15:04:10 +04:00
parent eaddba5640
commit c138799465
4 changed files with 84 additions and 69 deletions

View File

@ -1,4 +1,4 @@
[server] [server]
address=http://172.18.124.101 address=http://172.18.124.101
user=admin user=admin
password=AkvareL707 password=swordfish

View File

@ -20,7 +20,9 @@ class DataCentersPage(page.Page):
link = self.Link(name).Address() link = self.Link(name).Address()
datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1] datacenter_id = re.search('windc/(\S+)', link).group(0)[6:-1]
xpath = ".//*[@id='windc__row__%s']/td[3]/div/a[2]" % datacenter_id print 'Data Center ID: ' + datacenter_id
xpath = ".//*[@id='windc__row__%s']/td[4]/div/a[2]" % datacenter_id
self.Button(xpath).Click() self.Button(xpath).Click()
button_id = "windc__row_%s__action_delete" % datacenter_id button_id = "windc__row_%s__action_delete" % datacenter_id

View File

@ -1,11 +1,10 @@
from selenium import webdriver
class ButtonClass: class ButtonClass:
button = None button = None
def __init__(self, object): def __init__(self, obj):
self.button = object self.button = obj
def Click(self): def Click(self):
self.button.click() self.button.click()
@ -19,8 +18,8 @@ class ButtonClass:
class LinkClass: class LinkClass:
link = None link = None
def __init__(self, object): def __init__(self, obj):
self.link = object self.link = obj
def Click(self): def Click(self):
self.link.click() self.link.click()
@ -35,10 +34,9 @@ class LinkClass:
class EditBoxClass: class EditBoxClass:
edit = None
def __init__(self, object): def __init__(self, obj):
self.edit = object self.edit = obj
def isPresented(self): def isPresented(self):
if self.edit != None: if self.edit != None:
@ -56,8 +54,8 @@ class EditBoxClass:
class DropDownListClass: class DropDownListClass:
select = None select = None
def __init__(self, object): def __init__(self, obj):
self.select = object self.select = obj
def isPresented(self): def isPresented(self):
if self.select != None: if self.select != None:
@ -74,57 +72,66 @@ class DropDownListClass:
class Page: class Page:
driver = None driver = None
timeout = 30 timeout = 300
def __init__(self, driver): def __init__(self, driver):
driver.set_page_load_timeout(30) driver.set_page_load_timeout(30)
driver.implicitly_wait(30) driver.implicitly_wait(0.01)
self.driver = driver self.driver = driver
def _find_element(self, parameter): def _find_element(self, parameter):
object = None obj = None
try: k = 0
object = self.driver.find_element_by_name(parameter) while (obj == None and k < self.timeout):
return object k += 1
except: try:
pass obj = self.driver.find_element_by_name(parameter)
try: return obj
object = self.driver.find_element_by_id(parameter) except:
return object pass
except: try:
pass obj = self.driver.find_element_by_id(parameter)
try: return obj
object = self.driver.find_element_by_xpath(parameter) except:
return object pass
except: try:
pass obj = self.driver.find_element_by_xpath(parameter)
try: return obj
object = self.driver.find_element_by_link_text(parameter) except:
return object pass
except: try:
pass obj = self.driver.find_element_by_partial_link_text(parameter)
return obj
except:
pass
return object return obj
def Open(self, url): def Open(self, url):
self.driver.get(url) self.driver.get(url)
def Button(self, name): def Button(self, name):
object = self._find_element(name) obj = self._find_element(name)
button = ButtonClass(object) button = ButtonClass(obj)
return button return button
def Link(self, name): def Link(self, name):
object = self._find_element(name) obj = self._find_element(name)
link = LinkClass(object) link = LinkClass(obj)
return link return link
def EditBox(self, name): def EditBox(self, name):
object = self._find_element(name) obj = self._find_element(name)
edit = EditBoxClass(object) edit = EditBoxClass(obj)
return edit return edit
def DropDownList(self, name): def DropDownList(self, name):
object = self._find_element(name) obj = self._find_element(name)
select = DropDownListClass(object) select = DropDownListClass(obj)
return select return select
def Navigate(self, path):
steps = path.split(':')
for step in steps:
self.Button(step).Click()

View File

@ -1,45 +1,51 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import untitest2 import unittest2
from login_page import LoginPage
from datacenters_page import DataCentersPage from datacenters_page import DataCentersPage
from selenium import webdriver
class SanityTests(unittest2.TestCase): class SanityTests(unittest2.TestCase):
def setUp(self): def setUp(self):
self.page = DataCentersPage() driver = webdriver.Firefox()
self.page = LoginPage(driver)
self.page.login()
self.page.Navigate('Project:Windows Data Centers')
self.page = DataCentersPage(driver)
def tearDown(self): def tearDown(self):
self.page.close() self.page.driver.close()
def test_01_create_data_center(self): def test_01_create_data_center(self):
self.page.create_data_center('dc1') self.page.create_data_center('dc1')
assert self.page.find_data_center('dc1') is not None assert self.page.Link('dc1').isPresented()
def test_02_delete_data_center(self): def test_02_delete_data_center(self):
self.page.delete_data_center('dc1') self.page.delete_data_center('dc1')
assert self.page.find_data_center('dc1') is None assert not self.page.Link('dc1').isPresented()
def test_03_create_data_centers(self): def test_03_create_data_centers(self):
for i in range(1, 20): for i in range(1, 20):
name = 'datacenter' + str(i) name = 'datacenter' + str(i)
self.page.create_data_center(name) self.page.create_data_center(name)
assert self.page.find_data_center(name) is not None assert self.page.Link(name).isPresented()
def test_04_delete_data_centers(self): def test_04_delete_data_centers(self):
self.page.delete_data_center('datacenter1') self.page.delete_data_center('datacenter1')
self.page.delete_data_center('datacenter20') self.page.delete_data_center('datacenter20')
assert self.page.find_data_center('datacenter1') is None assert not self.page.Link('datacenter1').isPresented()
assert self.page.find_data_center('datacenter20') is None assert not self.page.Link('datacenter20').isPresented()
for i in range(2, 19): for i in range(2, 19):
name = 'datacenter' + str(i) name = 'datacenter' + str(i)
assert self.page.find_data_center(name) is not None assert self.page.Link(name).isPresented()
def test_05_create_service_ad(self): def test_05_create_service_ad(self):
name = 'dc001.local' name = 'dc001.local'
self.page.create_data_center(name) self.page.create_data_center('test')
self.select_data_center(name) self.page.select_data_center('test')
ad_parameters = {'1-dc_name': name, ad_parameters = {'1-dc_name': name,
'1-dc_count': 1, '1-dc_count': 1,
@ -47,7 +53,7 @@ class SanityTests(unittest2.TestCase):
'1-recovery_password': 'AkvareL707!'} '1-recovery_password': 'AkvareL707!'}
self.page.create_service('Active Directory', ad_parameters) self.page.create_service('Active Directory', ad_parameters)
assert self.page.find_service(name) is not None assert self.page.Link(name).isPresented()
if __name__ == '__main__': if __name__ == '__main__':