README.md

    基于python2+selenium3+pytest4的UI自动化框架

    环境:Python2.7.10, selenium3.141.0, pytest4.6.6, pytest-html1.22.0, Windows-7-6.1.7601-SP1

    特点:

    • 二次封装了selenium,编写Case更加方便。
    • 采用PO设计思想,一个页面一个Page.py,并在其中定义元素和操作方法;在TestCase中直接调用页面中封装好的操作方法操作页面。
    • 一次测试只启动一次浏览器,节约时间提高效率(适合公司业务的才是最好的)。
    • 增强pytest-html报告内容,加入失败截图、用例描述列、运行日志。
    • 支持命令行参数。
    • 支持邮件发送报告。

    目录结构:

    • config
      • config.py:存放全局变量,各种配置、driver等
    • drive:各浏览器驱动文件,如chromedriver.exe
    • file
      • download:下载文件夹
      • screenshot:截图文件夹
      • upload:上传文件夹
    • page_object:一个页面一个.py,存放页面对象、操作方法
      • base_page.py:基础页面,封装了selenium的各种操作
      • hao123_page.py:hao123页面
      • home_page.py:百度首页
      • news_page.py:新闻首页
      • search_page.py:搜索结果页
    • report:
      • report.html:pytest-html生成的报告
    • test_case
      • conftest.py:pytest特有文件,在里面增加了报告失败截图、用例描述列
      • test_home.py:百度首页测试用例
      • test_news.py:新闻首页测试用例
      • test_search.py:搜索结果页测试用例
      • demo1.py:通过加cookies免登陆的Demo
      • demo2.py:在已打开的Chrome浏览器进行调试的Demo
    • util:工具包
      • log.py:封装了日志模块
      • mail.py:封装了邮件模块,使用发送报告邮件功能需要先设置好相关配置,如用户名密码
    • run.py:做为运行入口,封装了pytest运行命令;实现所有测试用例共用一个driver;实现了运行参数化(结合Jenkins使用);log配置初始化;可配置发送报告邮件。

    元素定义特别用法说明:

    本框架支持selenium所有的定位方法,为了提高编写速度,改进了使用方法,定义元素时方法名和方法值为一个用逗号隔开的字符串,如:

    • xpath定位:i_keyword = 'xpath,//input[@id="kw"]' # 关键字输入框
    • id定位:b_search = 'id,su' # 搜索按钮
    • 其他定位方法同上,不再一一举例

    在代码中使用上面定义的元素:

    self.type(self.i_keyword, "学好selenium") # 使用封装过的sendkeys方法输入搜索关键字,详见base_page.py
    self.click(self.b_search) # 使用封装过的click方法点击搜索按钮

    命令行参数:

    Demo只添加了一个环境参数-e, 可设置测试环境preview,线上环境product,如要在线上运行测试,启动脚本输入:

    python run.py -e product

    可自行根据实际需要添加更多参数,并在run.py中的get_args()中进行修改。


    实际报告如图,分别展现了一个执行失败Case的报错信息+截图,一个执行通过Case的运行日志。

    readme_report.png

    项目简介

    基于python2+selenium3+pytest4的UI自动化框架

    发行版本

    当前项目没有发行版本

    贡献者 3

    BaiXuePrincess @BaiXuePrincess
    Z zhenhua.song @zhenhua.song
    S songzhenhua @songzhenhua

    开发语言

    • Python 99.4 %
    • CSS 0.6 %