更新readme文件
本框架是基于Python+Pytest+Playwright的UI自动化测试框架。
本框架要求使用者对playwright有一定的了解才能上手使用。
如果对您有帮助,请点亮 小星星 以表支持,谢谢! 对于框架有任何问题,请先仔细阅读本文~ 如果还有不了解的,欢迎联系我!
# 框架目录结构 ├────.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 = "*"
通过Git工具clone代码到本地 或者 直接下载压缩包ZIP
git clone https://gitlink.org.cn/floraachy/uiautotest_playwright.git
注意:分支是:master
本地电脑搭建好 python环境,我使用的python版本是3.9。包括allure测试报告所需的java环境(安装jdk)。
注意: 如果不熟悉pipenv, 可以跳过该步骤。
安装pipenv
# 建议在项目根目录下执行命令安装 pip install pipenv
使用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
playwright install # 安装浏览器驱动
如上环境都已经搭建好了,包括框架依赖包也都安装好了。
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”: “”, ……}
rerun
reruns_delay
max_fail
1)删除 testcases目录test_开头的文件是测试用例,可以全部删除。 2)删除testcases目录下的conftest.py文件中的内容可以选择性保留。 3)删除pages目录是管理的页面元素定位和操作方法,可以全部删除 4)删除interfaces目录是管理的基础接口,可以全部删除
testcases
test_
conftest.py
pages
interfaces
1)基于page object模式,在pages目录,新建一个*_page.py文件, 封装元素定位以及相关操作方法。 2)在testcases目录新建一个以test_文件,编写测试用例 3)如果用例中有依赖接口造数据,可以在interfaces目录,管理基础接口。
*_page.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
或者上述步骤可以合并为:pipenv run python run.py
注意:
run.py
https://pypi.org/project/playwright/ https://playwright.dev/python/docs/intro https://playwright.nodejs.cn/docs/intro
https://pypi.org/project/pytest-playwright/ https://github.com/microsoft/playwright-pytest
如果这个库有帮助到你并且你很想支持库的后续开发和维护,那么你可以扫描下方二维码随意打赏我,我将不胜感激~
本框架是基于Python+Pytest+Playwright+BDD的UI自动化测试框架。
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
一、框架介绍
本框架是基于Python+Pytest+Playwright的UI自动化测试框架。
本框架要求使用者对playwright有一定的了解才能上手使用。
如果对您有帮助,请点亮 小星星 以表支持,谢谢! 对于框架有任何问题,请先仔细阅读本文~ 如果还有不了解的,欢迎联系我!
二、实现功能
三、框架目录结构
四、依赖库
五、安装教程
1. 下载代码
通过Git工具clone代码到本地 或者 直接下载压缩包ZIP
注意:分支是:master
2. 安装python
本地电脑搭建好 python环境,我使用的python版本是3.9。包括allure测试报告所需的java环境(安装jdk)。
3. 安装依赖包
方法一:使用pipenv管理依赖包
安装pipenv
使用pipenv管理安装环境依赖包:pipenv install (必须在项目根目录下执行)
方法二:直接将依赖包安装在本机
扩展: 使用 pipreqs 生成 requirements.txt
4. 安装playwright浏览器驱动
如上环境都已经搭建好了,包括框架依赖包也都安装好了。
六、如何创建用例
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. 激活已存在的虚拟环境
2. 运行
或者上述步骤可以合并为:pipenv run python run.py
方式二:依赖包安装在本机
注意:
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
赞赏
如果这个库有帮助到你并且你很想支持库的后续开发和维护,那么你可以扫描下方二维码随意打赏我,我将不胜感激~