自动化测试框架:分层+po模式
po模式:基础封装层BasePage,po页面对象层,TestCase测试用例层。再加上日志处理模块,ini文件读取模块,ddt数据驱动模块,jenkins持续集成
BaseTestCase
import unittest2
from selenium import webdriver
class BaseTestCase(unittest2.TestCase):
@classmethod
def setUpClass(cls):
cls.driver=webdriver.Chrome()
cls.driver.implicitly_wait(3)
cls.driver.maximize_window()
@classmethod
def tearDownClass(cls):
# time.sleep(3)
cls.driver.quit()
TestCase、ddt数据驱动
import ddt
from func.csvFileManager2 import reader
from test_case.BaseTestCase import BaseTestCase
import unittest2
#当前类是数据驱动类
@ddt.ddt
class RegisterTest3(BaseTestCase):
list=reader("register_test_cases.csv")
#指定测试数据源,要求数据源的格式不能是数组或者列表
#数组或者列表前加*,表明列表内每个值是一个变量
@ddt.data(*list)
def test_register(self,row):
self.driver.get("http://127.0.0.1/index.php?m=user&c=public&a=reg")
self.driver.find_element_by_name("username").send_keys(row[0])
self.driver.find_element_by_name("password").send_keys(row[1])
self.driver.find_element_by_name("userpassword2").send_keys(row[2])
self.driver.find_element_by_name("mobile_phone").send_keys(row[3])
self.driver.find_element_by_name("email").send_keys(row[4])
# self.driver.find_element_by_class_name("reg_btn").click()
if __name__ == '__main__':
unittest2.main
测试数据读取
import csv
import os
def reader(filename):
# basepath = os.getcwd()
# seppath = os.path.abspath(os.path.dirname(basepath) + os.path.sep + '.')
# datapath = seppath + r'/test_data/'+filename
# print(datapath)
# file = open(datapath, 'r')
basepath=os.path.dirname(__file__)
datapath=basepath.replace("func","test_data/"+filename)
list = []
with open(datapath) as file:
table = csv.reader(file)
i=0
for row in table:
if i==0:
pass
else:
list.append(row)
i = i + 1
return list
if __name__ == '__main__':
result=reader("register_test_cases.csv")
print(result)
框架执行
import unittest2
from lib.HTMLTestRunner import HTMLTestRunner
if __name__ == '__main__':
suite=unittest2.defaultTestLoader.discover("./test_case","*Test.py")
# unittest2.TextTestRunner().run(suite)
path="report/TestReport.html"
file=open(path,'wb')
HTMLTestRunner(stream=file,title='自动化测试报告',description='chrome',tester = '测试').run(suite)