1. Test case编写模式(page模式,参考之前的博文http://www.cnblogs.com/AlwinXu/p/5537955.html)
2. Test case的管理及执行 (主要是用nose)
3. 测试报告的生成(xml和html两种格式)
对于自动化测试而言,这些模块应该是最基本的配置了,当然还有一些辅助模块比如日志,其他公共库模块等需要根据具体的业务逐渐丰富。闲话少说,用代码交流吧。
测试用例编写
该模块用了Page模式,之前介绍过,这次只贴代码了
BasePage.py:
__author__ = 'xua' #super class class BasePage(object): def __init__(self, driver): self.driver = driver |
然后是各个web page继承BasePage,LoginPage.py:
from BasePage import BasePage from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys class LoginPage(BasePage): """description of class""" #page element identifier usename = (By.ID,'username') password = (By.ID, 'password') dialogTitle = (By.XPATH,'//html/body/div[7]/div/div/div[1]/h3') cancelButton = (By.XPATH,'//html/body/div[7]/div/div/div[3]/button[2]') #Get username textbox and input username def set_username(self,username): name = self.driver.find_element(*LoginPage.usename) name.send_keys(username) #Get password textbox and input password, then hit return def set_password(self, password): pwd = self.driver.find_element(*LoginPage.password) pwd.send_keys(password + Keys.RETURN) #Get pop up dialog title def get_DiaglogTitle(self): digTitle = self.driver.find_element(*LoginPage.dialogTitle) return digTitle.text #Get "cancel" button and then click def click_cancel(self): cancelbtn = self.driver.find_element(*LoginPage.cancelButton) cancelbtn.click() |
测试用例信息类:
TestCaseInfo.py
class TestCaseInfo(object): """description of class""" def __init__(self, id="",name="",owner="",result="Failed",starttime="",endtime="",errorinfo=""): self.id = id self.name = name self.owner = owner self.result = result self.starttime = starttime self.endtime = endtime self.errorinfo = errorinfo |
最后是每个测试用例的编写:(每个用例必须有自己的用例信息,这里有ID,Name等等信息,也会调用测试结果报告生成模块来添加测试结果)
Test_Login.py
__author__ = 'xua' from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.alert import Alert import unittest import time from LoginPage import LoginPage from TestCaseInfo import TestCaseInfo from TestReport import TestReport class Test_Login(unittest.TestCase): #Setup def setUp(self): self.driver = webdriver.Chrome(r'C:\Users\xua\Downloads\chromedriver_win32\chromedriver.exe') self.driver.implicitly_wait(30) self.base_url = "http://10.222.30.145:9000/" #test case information self.testcaseinfo = TestCaseInfo(id="3",name="Login to floor manager lite using sbxadmin",owner="xua") self.testResult = TestReport() def test_Login(self): try: self.testcaseinfo.starttime = str(time.asctime()) #Step1: open base site self.driver.get(self.base_url) #Step2: Open Login page login_page = LoginPage(self.driver) #Step3: Enter username login_page.set_username("sbXadmin") #Step4: Enter password login_page.set_password("IGTtest1") #Checkpoint1: Check popup dialog title self.assertEqual(login_page.get_DiaglogTitle(),"Sign in","Not Equal") #Step5: Cancel dialog login_page.click_cancel() self.testcaseinfo.result = "Pass" except Exception as err: self.testcaseinfo.errorinfo = str(err) finally: self.testcaseinfo.endtime = str(time.asctime()) #tearDown def tearDown(self): self.driver.close() #write test result self.testResult.WriteHTML(self.testcaseinfo) if __name__ == "__main__": unittest.main() |