目录

AIGC: ContentProducer: Minimax Agent AI ContentPropagator: Minimax Agent AI Label: AIGC ProduceID: “00000000000000000000000000000000” PropagateID: “00000000000000000000000000000000” ReservedCode1: 30450221009294622b8738d8d080ceac862c761b8c6429f18778624e5ed16ff070720a0a9e02200a8e906b06da04865ae0b96477996b52ea6caf27aa46942532c055d25f0429d2 ReservedCode2: 304402206acebc25ebe5439f09841901b0955d45e2c16a082d18189586da1680ce414599022070c765798ad1aa1739cd5681cdd1256eba9c5c6b48c8faa3d444d37c230b5fb9


UI自动化测试框架

基于 Python + pytest + Playwright + Allure + Loguru 实现的Web UI自动化测试框架。

项目简介

本框架专为GitLink登录功能测试设计,支持以下核心功能:

  • 完整的Page Object Model (POM) 设计模式
  • Allure可视化测试报告,每个步骤都有详细日志
  • Loguru日志记录,测试过程全程可追溯
  • 失败时自动截图,方便问题定位
  • 多浏览器支持(Chromium、Firefox、WebKit)
  • 钉钉测试结果自动通知
  • 网络不稳定环境兼容处理

环境要求

要求项 说明
Python 3.8 或更高版本
操作系统 Windows / macOS / Linux
浏览器 Chrome / Firefox / Safari(根据选择的浏览器类型)

快速开始

步骤1:克隆项目

git clone <your-repo-url>
cd auto_test_project

步骤2:创建虚拟环境(推荐)

# 创建虚拟环境
python -m venv venv

# 激活虚拟环境
# Windows:
venv\Scripts\activate
# macOS / Linux:
source venv/bin/activate

步骤3:安装依赖

pip install -r requirements.txt

步骤4:安装Playwright浏览器

# 安装所有浏览器
playwright install

# 或仅安装特定浏览器
playwright install chromium
playwright install firefox
playwright install webkit

步骤5:配置修改

编辑 config/config.yaml 文件,配置以下内容:

钉钉通知配置(可选)

dingtalk:
  is_enable: true  # 开启钉钉通知
  token: "your_dingtalk_token_here"  # 替换为你的钉钉Webhook Token
  secret: ""  # 钉钉加签密钥(可选)
  at_mobiles: []  # @人的手机号(可选)

如何获取钉钉Webhook Token:

  1. 打开钉钉群设置 → 智能群助手 → 添加机器人
  2. 选择”自定义”机器人
  3. 设置机器人名称和安全设置(可选)
  4. 复制Webhook地址中的access_token参数

测试账号配置

user:
  valid_user: "autotest"       # 有效的测试账号
  valid_password: "12345678"   # 有效账号密码
  test_user: "floratest1"       # 用于测试密码错误的账号
  test_password: "12345679"    # 错误密码

浏览器配置

browser:
  name: "chromium"  # 支持 chromium, firefox, webkit
  headless: false  # 是否无头模式运行

运行测试

基本用法

# 使用默认配置运行(Chromium浏览器,有界面)
pytest

# 无头模式运行
pytest --headless

# 指定浏览器
pytest --browser=chromium
pytest --browser=firefox
pytest --browser=webkit

常用命令

# 运行特定测试用例
pytest -k "test_popup_login_success"

# 运行特定标记的测试
pytest -m smoke

# 显示详细输出
pytest -v -s

# 失败时重新运行
pytest --reruns 3

# 生成HTML报告
pytest --html=report.html --self-contained-html

使用run.py脚本

# 查看帮助
python run.py --help

# 使用默认配置运行
python run.py

# 指定无头模式
python run.py --headless

# 运行特定用例
python run.py --keyword "popup_login"

# 安装依赖
python run.py --install

浏览器配置

浏览器的配置在 config/config.yaml 文件中:

browser:
  # 支持 chromium, firefox, webkit
  name: "chromium"

修改 browser.name 的值来切换浏览器。

查看测试报告

Allure报告

# 生成HTML报告
allure generate ./report/xml -o ./report/html --clean

# 打开报告(自动打开浏览器)
allure serve ./report/html

# 打开本地HTML报告
allure open ./report/html

Pytest HTML报告

# 运行测试时自动生成
pytest --html=report.html --self-contained-html
# 然后在浏览器中打开 report.html

日志和截图

测试运行过程中,会自动生成以下文件:

logs/
├── test_20240315_143022.log    # 测试日志(按时间戳命名)
├── test_20240315_143045.log
└── screenshots/
    ├── failed_test_popup_login_success_1699999999.png  # 失败截图
    └── ...

日志记录了每个操作的详细信息,包括:

  • 操作时间
  • 操作类型(点击、输入、等待等)
  • 操作对象
  • 操作结果
  • 异常信息(如有)

测试用例说明

用例ID 用例名称 测试方法 说明
用例1 弹窗登录-正确用户名和密码 test_popup_login_success 通过弹窗方式登录,验证登录成功
用例2 网页登录-正确用户名和密码 test_page_login_success 通过登录页面登录,验证登录成功
用例3 网页登录-密码错误次数提示 test_page_login_wrong_password 验证连续输错密码时的提示信息

项目结构

auto_test_project/
├── config/                  # 配置模块
│   ├── config.yaml          # 全局配置文件
│   └── setting.py          # 配置读取器
├── common/                  # 公共工具
│   ├── logger.py           # 日志封装
│   ├── dingtalk.py        # 钉钉通知
│   └── utils.py            # 工具函数
├── pages/                  # 页面对象
│   ├── base_page.py       # 基础页面类
│   ├── login_page.py      # 登录页面
│   └── home_page.py       # 首页
├── test_cases/            # 测试用例
│   ├── conftest.py        # Pytest配置
│   └── test_login.py      # 登录测试
├── report/                # 测试报告
│   ├── xml/              # Allure XML
│   └── html/             # Allure HTML
├── logs/                  # 日志文件
├── pytest.ini             # Pytest配置
├── requirements.txt      # 依赖
└── run.py                 # 运行脚本

常见问题

Q1: 运行时报错 “playwright not found”

# 确保已安装playwright
pip install playwright
playwright install

Q2: 钉钉通知没有发送

  1. 检查 config.yaml 中的 dingtalk.is_enable 是否为 true
  2. 检查 dingtalk.token 是否正确配置
  3. 查看日志文件确认是否有发送记录

Q3: 元素定位失败

如果测试运行过程中出现元素定位失败,可能是因为:

  1. 页面结构发生变化,需要更新选择器
  2. 网络加载慢,增加等待时间
  3. 页面没有完全加载

可以在 pages/login_page.py 中调整选择器,或在 base_page.py 中增加等待时间。

Q4: Allure报告中文显示乱码

# 设置环境变量
export LANG=zh_CN.UTF-8
# 重新生成报告
allure generate ./report/xml -o ./report/html --clean

进阶用法

添加新的测试用例

  1. test_cases/ 目录下创建新的测试文件
  2. 使用 @allure.feature@allure.story 装饰器
  3. pages/ 目录下创建对应的页面对象类

添加新的页面对象

参考 pages/login_page.py 的结构:

from pages.base_page import BasePage

class NewPage(BasePage):
    # 定义元素选择器
    ELEMENT_NAME = "selector"

    # 定义操作方法
    def do_something(self):
        self.click(self.ELEMENT_NAME, "描述")

修改超时设置

config/config.yaml 中调整:

env:
  timeout: 30000           # 页面操作超时(毫秒)
  wait_element_timeout: 10  # 元素等待超时(秒)

许可证

MIT License

联系方式

如有问题,请联系测试团队。

关于

基于 Python + pytest + Playwright + Allure + Loguru 实现的Web UI自动化测试框架。

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

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802032778号