这套框架适合使用的场景:
1、测试数据不多
2、执行人员不需要会代码
3、看报告的时候要看执行详细结果
工程分为以下几部分:
1、公用方法包-Util
2、需要调用的固定变量包-ProjectVar
3、元素路径目录-Conf
4、页面元素常用动作方法+模块动作方法包-Action
5、测试用例执行包-TestUnittest
6、截图目录
看一下目录组成结构:
- 1.公用方法包-Util
- 1.1 DirAndFile.py
- 这个模块是为了创建目录用的
#encoding=utf-8
import os
from ProjectVar.Var import *
def createDir(path,dirName):
#os.path.join(x,y)是拼接路径用的
dirPath=os.path.join(path,dirName)
#判断路径是否存在,存在则pass,否则新建
if os.path.exists(dirPath):
return dirPath
pass
else:
os.mkdir(dirPath)
return dirPath
- 1.2Excel.py
- 这个模块封装了excel的常用操作方法
#encoding=utf-8
from openpyxl import Workbook
from openpyxl import load_workbook
from ProjectVar.Var import *
from openpyxl.styles import Border,Side,Font
class Excel(object):
def __init__(self):
self.font=Font(color=None)
self.colorDict={
'red':'FFFF3030','green':'FF008B00'}
self.wb=load_workbook(test_path)
self.ws=self.wb.active
def rename(self,new_name):
#给表格重命名
self.ws.title=new_name
self.wb.save(test_path)
def GetSheetName(self):
#获取所有表格名称
return self.wb.get_sheet_names()
def GetSheetByName(self,sheet_name):
#通过表格名称获取表格
self.ws=self.wb.get_sheet_by_name(sheet_name)
return self.ws
def GetCurrentSheetName(self):
#获取当前表格名称
return self.ws.title
def GetCellContent(self,row_num,col_num):
#获取单元格内容
return self.ws.cell(row=row_num,column=col_num).value
def WriteCellContent(self,row_num,col_num,content):
#往指定的单元格里面写入内容
self.ws.cell(row=row_num,column=col_num).value=content
self.wb.save(test_path)
def GetMaxRow(self):
#获取最大行号
return self.ws.max_row
def GetMaxColumn(self):
#获取最大列号
return self.ws.max_column
其实本次框架中没有用到excel,但是我还是把他写上,方便大家使用;【对于数据的传递也可以使用excel来操作的】
- 1.3GetConf.py
- 这个模块是为了操作配置文件用的方法
#encoding=utf-8
import ConfigParser
from ProjectVar.Var import *
class ParsePageObjectRepositoryConfig(object):
def __init__(self):
self.cf=ConfigParser.ConfigParser()
self.cf.read(page_object_repository_path)
def getItemsFromSection(self,sectionName):
items=self.cf.items(sectionName)
return dict(items)
if __name__=='__main__':
#调试代码
p=ParsePageObjectRepositoryConfig()
print p.getItemsFromSection('126mail_login')
print p.getItemsFromSection('126mail_login')['loginpage.frame'].split('//')[1]
print type(p.getItemsFromSection('126mail_login')['loginpage.frame'].split('//')[1])
- 1.4log.py
- 打印日志用的(这里可以不用这个,因为HTML就可以用)
#encoding=utf-8
import logging
import logging.config
from ProjectVar.Var import *
import os
#读取日志的配置文件
logging.config.fileConfig(project_path+