UI自动化测试及框架
python + pytest框架
依赖包:pytest(单元测试框架)
allure-pytest(生成html报告)
pytest-html(生成html报告)
selenium(web自动化工具)
appium(app自动化工具)
parameterized(参数化)
目录结构:base(封装PO基类,对象库层基类、操作层基类)
page(封装PO页面对象类,定义对象库层、操作层、业务层)
script(存放测试的脚本)
data(存放测试数据)
report(存放测试报告)
log(日志目录)
screenshot(存放截图)
config.py(定义项目的配置信息)
conftest.py(专门存放fixture的配置文件,跨.py文件调用)
utils.py(自定义工具类)
pytest.ini(pytest配置文件)
PO模式先确定几个页面,根据对应的页面去创建页面对象的文件
确定每个页面要用到多少个元素对象库层
操作层
业务层
utils.py预览:
获取浏览器驱动:
# 定义工具类import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Byclass UtilsDriver: _mp_driver = None # 表示的是自媒体平台的浏览器驱动 _mis_driver = None # 表示的是后台管理的浏览器驱动 _app_driver = None # 表示的是app的驱动 # 定义获取自媒体平台的浏览器驱动 @classmethod def get_mp_driver(cls): if cls._mp_driver is None: cls._mp_driver = webdriver.Chrome() cls._mp_driver.maximize_window() cls._mp_driver.get("http://ttmp.research.itcast.cn/") return cls._mp_driver
退出浏览器驱动:
# 定义退出自媒体平台的浏览器驱动 @classmethod def quit_mp_driver(cls): if cls._mp_driver is not None: cls.get_mp_driver().quit() cls._mp_driver = None
获取app驱动:
from appium import webdriver as app_driver # 定义获取app的驱动 @classmethod def get_app_driver(cls): if cls._app_driver is None: des_cap = { "platformName": "android", # 表示的是android 或者ios "platformVersion": "5.1.1", # 表示的是平台系统的版本号 "deviceName": "****", # 表示的是设备的ID名称(如果只有一个设备可以用****来代替) "appPackage": "com.itcast.toutiaoApp", # 表示app的包名 "appActivity": ".MainActivity", # 表示的是app的界面名 "noReset": True, # 用来记住app的session,如果有登陆或做过初始化的操作,为