目录
目录README.md

一、框架介绍

本框架是基于Python+Pytest+Playwright的UI自动化测试框架。

本框架要求使用者对playwright有一定的了解才能上手使用。

加入我们

如果对您有帮助,请点亮 小星星 以表支持,谢谢! 对于框架有任何问题,请先仔细阅读本文~ 如果还有不了解的,欢迎联系我!

二、实现功能

  • 支持通过命令行指定浏览器,选择需要运行的浏览器。
  • 建立接口池,处理用例依赖数据
  • 支持通过命令行指定运行环境,实现环境一键切换,解决多环境相互影响问题。
  • 采用pageobject模式,管理页面元素以及操作,提高项目的代码重用性
  • 采用loguru管理日志,可以输出更为优雅,简洁的日志
  • 钉钉、企业微信通知: 支持多种通知场景,执行成功之后,可选择发送钉钉、或者企业微信、邮箱通知
  • 使用pipenv管理虚拟环境和依赖文件,可以使用pipenv install一键安装依赖包。

三、框架目录结构

# 框架目录结构
├────.auth/
├────.gitignore
├────config/  配置文件层,存放整个项目需要用到的配置项
│    ├────__init__.py
│    ├────allure_config/
│    │    ├────http_server.exe  生成的一个http服务,用于放在allure报告压缩包里面,在windows环境下不安装allure也能打开查看报告
│    │    ├────logo.svg   当前部门或者项目logo,用于替换allure报告里面的logo。注意:代码里面无替换,是手动在lib/allure里面替换的
│    │    └────双击打开Allure报告.bat    一个用于在windows环境下不安装allure也能打开查看报告bat文件
│    ├────global_vars.py   全局变量,用于保存测试过程中变量,方便调用
│    ├────path_config.py    项目路径配置文件,注意:目录名称更改,需要更改配置文件
│    └────settings.py    项目配置文件,用于保存一些配置数据
└────utils/   公共模块,将一些公共函数、方法以及通用操作进行封装
│    ├────__init__.py
│    ├────assertion_utils/   接口断言的处理
│    │    ├────__init__.py
│    │    ├────assert_control.py
│    │    └────assert_function.py
│    ├────base_utils/   playwright基类,包括UI和API
│    │    ├────__init__.py
│    │    ├────base_page.py   基类,定义项目所需的基础方法,对playwright一些常用的页面进行二次封装,提高项目的代码重用性
│    │    ├────base_request.py  基类,定义项目所需的基础方法,对playwright的接口进行二次封装
│    │    └────request_control.py 请求playwright的接口进行再次封装,包括请求前数据处理,请求时日志记录,请求后断言,数据提取
│    ├────data_utils/   处理数据的一些方法
│    │    ├────__init__.py
│    │    ├────data_handle.py
│    │    ├────eval_data_handle.py
│    │    ├────extract_data_handle.py
│    │    └────faker_handle.py
│    ├────database_utils/  数据库处理
│    │    ├────__init__.py
│    │    └────mysql_handle.py
│    ├────files_utils/  文件处理
│    │    ├────__init__.py
│    │    ├────files_handle.py
│    │    └────yaml_handle.py
│    ├────logger_utils/  日志处理
│    │    ├────__init__.py
│    │    └────loguru_log.py
│    ├────models.py   模型类
│    ├────notify_utils/   通知处理
│    │    ├────__init__.py
│    │    ├────dingding_bot.py
│    │    ├────wechat_bot.py
│    │    └────yagmail_bot.py
│    ├────report_utils/  报告处理
│    │    ├────__init__.py
│    │    ├────allure_handle.py
│    │    ├────get_results_handle.py
│    │    ├────platform_handle.py
│    │    └────send_result_handle.py
│    └────tools/  其他工具类
│    │    ├────__init__.py
│    │    ├────func_handle.py
│    │    ├────generate_project_tree.py
│    │    ├────http_server.py
│    │    └────time_handle.py
├────lib/  保存第三方包,例如:[allure-2.22.0]
├────files/  用于存放测试过程中所需要的测试文件
├────outputs/  测试报告,日志,图片保存的路径
│    ├────image/ 用于管理生成的图片
│    ├────log/ 用于管理生成的日志
│    └────report/  测试报告层,用于管理生成的测试报告
├────interfaces/  接口池,保存测试过程中需要调用的接口
├────pages/     page_object,页面对象层,也是PO的核心层,继承BasePage,管理页面元素以及操作元素的方法(将操作元素的动作写成方法)
├────testcases/  测试用例层,用于管理测试用例,这里会用到单元测试框架:Pytest, 涉及到conftest.py的使用
├────conftest.py  Pytest 测试框架中用于定义可重用的测试夹具(fixtures)
├────dockerfile   使用docker部署框架的文件
├────dockerfile2 使用docker部署框架的文件
├────Pipfile  pipenv管理框架所需的依赖包
├────Pipfile.lock  pipenv管理框架所需的依赖包
├────pytest.ini  pytest的配置文件
├────README.md
├────requirements.txt   管理框架所有的依赖包及对应版本
├────run.py  批量执行测试用例的主程序

四、依赖库

pytest = "==6.2.5"
loguru = "*"
pytest-rerunfailures = "*"
faker = "*"
yagmail = "*"
allure-pytest = "*"
pytest-playwright = "*"
jsonpath = "*"
pyyaml = "*"
pymysql = "*"
sshtunnel = "*"
pipreqs = "*"
pytest-ordering = "*"
pathvalidate = "*"
pycryptodome = "*"

五、安装教程

1. 下载代码

通过Git工具clone代码到本地 或者 直接下载压缩包ZIP

git clone https://gitlink.org.cn/floraachy/uiautotest_playwright.git

注意:分支是:master

2. 安装python

本地电脑搭建好 python环境,我使用的python版本是3.9。包括allure测试报告所需的java环境(安装jdk)。

3. 安装依赖包

方法一:使用pipenv管理依赖包

注意: 如果不熟悉pipenv, 可以跳过该步骤。
  1. 安装pipenv

    # 建议在项目根目录下执行命令安装
    pip install pipenv
  2. 使用pipenv管理安装环境依赖包:pipenv install (必须在项目根目录下执行)

    注意:使用pipenv install会自动安装Pipfile里面的依赖包,该依赖包仅安装在虚拟环境里,不安装在测试机。

方法二:直接将依赖包安装在本机

pip install -r requirements.txt

扩展: 使用 pipreqs 生成 requirements.txt

# 安装
pip install pipreqs
# 在当前目录生成
pipreqs . --encoding=utf8 --force
注意 --encoding=utf8 为使用utf8编码,不然可能会报UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 406: illegal multibyte sequence 的错误。

--force 强制执行,当 生成目录下的requirements.txt存在时覆盖。

注意:如果是使用pipenv管理依赖包,要使用命令:pipenv requirements > requirements.txt

4. 安装playwright浏览器驱动

playwright install   # 安装浏览器驱动

如上环境都已经搭建好了,包括框架依赖包也都安装好了。

六、如何创建用例

1. 修改配置文件 config.settings.py

1)确认RunConfig的各项参数,可以调整失败重跑次数rerun, 失败重跑间隔时间reruns_delay,当达到最大失败数,停止执行max_fail 2)确认测试完成后是否发送测试结果,由SEND_RESULT_TYPE控制,并填充对应邮件/钉钉/企业微信配置信息 3)指定日志收集级别,由LOG_LEVEL控制 4) 配置测试相关数据: ENV_VARS[“common”]是一些公共参数,如报告标题,报告名称,测试者,测试部门。后续会显示在测试报告上。如果还有其他,可自行添加 ENV_VARS[“test”]是保存test环境的一些测试数据。ENV_VARS[“live”]是保存live环境的一些测试数据。如果还有其他环境可以继续增加,例如增加ENV_VARS[“dev”] = {“host”: “”, ……}

2.删除框架中的示例用例数据

1)删除 testcases目录test_开头的文件是测试用例,可以全部删除。 2)删除testcases目录下的conftest.py文件中的内容可以选择性保留。 3)删除pages目录是管理的页面元素定位和操作方法,可以全部删除 4)删除interfaces目录是管理的基础接口,可以全部删除

3. 编写测试用例

1)基于page object模式,在pages目录,新建一个*_page.py文件, 封装元素定位以及相关操作方法。 2)在testcases目录新建一个以test_文件,编写测试用例 3)如果用例中有依赖接口造数据,可以在interfaces目录,管理基础接口。

七、运行自动化测试

方式一:使用pipenv管理虚拟环境

1. 激活已存在的虚拟环境

  • (如果不存在会创建一个):pipenv shell (必须在项目根目录下执行)

2. 运行

  > python run.py  (默认在test环境运行测试用例, 报告采用allure)
  > python run.py -m demo 在test环境仅运行打了标记demo用例, 默认报告采用allure
  > python run.py -env live 在live环境运行测试用例
  > python run.py -env=test 在test环境运行测试用例
  > python run.py -browser chromium  (使用chrome浏览器运行测试用例)
  > python run.py -env test  -report no -browser chromium  -mode headless 在test环境,使用谷歌无头浏览器运行用例,并且生成allure html report

或者上述步骤可以合并为:pipenv run python run.py

方式二:依赖包安装在本机

  > python run.py  (默认在test环境运行测试用例, 报告采用allure)
  > python run.py -m demo 在test环境仅运行打了标记demo用例, 默认报告采用allure
  > python run.py -env live 在live环境运行测试用例
  > python run.py -env=test 在test环境运行测试用例
  > python run.py -browser chromium  (使用chrome浏览器运行测试用例)
  > python run.py -env test  -report no -browser chromium  -mode headless 在test环境,使用谷歌无头浏览器运行用例,并且生成allure html report

注意:

  • 如果pycharm.interpreter拥有了框架所需的所有依赖包,可以通过pycharm直接在run.py中右键运行

八 、初始化项目可能遇到的问题

Playwright Documentation

https://pypi.org/project/playwright/ https://playwright.dev/python/docs/intro https://playwright.nodejs.cn/docs/intro

pytest-playwright Documentation

https://pypi.org/project/pytest-playwright/ https://github.com/microsoft/playwright-pytest

赞赏

如果这个库有帮助到你并且你很想支持库的后续开发和维护,那么你可以扫描下方二维码随意打赏我,我将不胜感激~

关于

本框架是基于Python+Pytest+Playwright+BDD的UI自动化测试框架。

20.3 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号