📌 项目入口
| 项目 | 地址 |
|---|---|
| 🧪 IQ Web 自动化测试框架 (Python) | https://github.com/nqxing/IQSelenium |
| 🎮 公众号智能助手 | https://github.com/nqxing/pub_zqwz |
项目一:IQ Web 自动化测试框架 (Python) 🧪
项目地址:https://github.com/nqxing/IQSelenium
声明:本项目为 NQX 个人简历作品演示项目,请勿用于其他用途。
基于 pytest + Selenium + Page Object Model (POM) 搭建的 Web UI 自动化测试框架,
覆盖两个业务平台(综合素质评价系统 / 智慧校园系统)的 43 条测试用例。本仓库用于 Python 自动化测试技能展示,测试环境与业务数据均为脱敏占位内容。
特性
- Page Object 模式:页面元素定位与业务操作封装在
pages/,用例只关心业务流程 - BasePage 统一封装:点击 / 输入 / 显式等待 / iframe 切换 / JS 去 readonly / 截图 / 文件上传
- 数据驱动:学生账号存于
data/test.xlsx,课程清单存于data/*.txt,登录凭据集中管理 - 多平台覆盖:PC 端 + 移动端(微信 App 页面) + 桌面应用场景
- 日志与报告:
common/logger.py输出控制台 + 文件日志,可接 Allure 报告 - 稳定性处理:JS + Robot 处理日期控件 / 隐藏元素 / 操作系统文件选择框上传
目录结构
Bash/Shell
IQSelenium_Python/
├── run.py # 执行入口 (python run.py [--suite tw|school|all])
├── conftest.py # pytest 全局 fixture (会话级复用浏览器)
├── pytest.ini # marker 配置 (tw/school/slow/app)
├── requirements.txt # 依赖清单
│
├── config/
│ ├── config.py # 全部测试配置 (URL/账号/密码/路径) — 集中管理
│ └── config.yaml # yaml 版配置
│
├── common/ # 公共模块
│ ├── base_page.py # BasePage: 定位/点击/输入/等待/frame/JS/截图
│ ├── logger.py # 日志封装
│ └── read_data.py # 日期工具/excel读写/文件读取/浏览器驱动
│
├── utils/ # 工具集合
│ └── data_utils.py
│
├── data/ # 测试数据 (xlsx 账号 + txt 课程清单)
│
├── pages/ # Page Object
│ ├── tw/ # 综合素质评价系统
│ └── school/ # 智慧校园系统
│
├── testcases/ # pytest 用例
│ ├── tw/ # 27 条
│ └── school/ # 16 条
│
└── reports/ # Allure 报告输出
技术栈
| 模块 | 技术 |
|---|---|
| 测试框架 | pytest 7+ |
| 浏览器自动化 | Selenium 4+ (WebDriverWait / ActionChains / JS) |
| 数据解析 | openpyxl (xlsx) / PyYAML |
| 报告 | allure-pytest / 日志 |
| 文件上传 | pyautogui (系统级剪贴板+键盘) |
快速开始
Bash/Shell
# 1. 安装依赖
pip install -r requirements.txt
# 2. 运行全部用例
python run.py
# 3. 按模块运行
python run.py --suite tw # 综合素质评价系统
python run.py --suite school # 智慧校园系统
# 4. 直接使用 pytest
pytest -m tw # 只跑 marker=tw
pytest testcases/school -m school -s -v
# 5. 生成 Allure 报告
pytest --alluredir=reports/allure-results
allure serve reports/allure-results
框架设计要点
- POM 分层:
BasePage→ 页面业务对象 → 用例;元素定位集中在页面对象,元素变更只改一处 - Driver 会话复用:
conftest.py提供会话级 fixture,整套用例共享一个浏览器,贴近生产回归场景 - 稳定等待:
BasePage.get_text_by_wait/is_visible使用显式等待;对必须保留的旧页面 sleep 集中为bp.sleep() - 数据与配置分离:账号/密码/URL 全部集中在
config/config.py,测试数据在data/ - 跨端覆盖:PC 浏览器 + 移动端 User-Agent/窗口缩放 + 多 iframe 层级、window 切换
说明
测试环境地址、账号密码均为脱敏占位(*.example.com / admin_user / Demo@2024),
实际运行前请在 config/config.py 中配置真实环境。
项目二:公众号智能助手 🎮
声明:本项目为 NQX 个人简历作品演示项目,用于展示本人在Python开发方向的代码能力,请勿用于其他用途。
基于 Django 构建的微信公众号自动回复系统,集成了 王者荣耀 和 英雄联盟 (LOL) 的游戏数据查询、壁纸/语音包资源管理、WordPress 文章自动发布等功能。
🌐 应用站点:https://zuiqu.net — 所有壁纸文章、语音包、攻略等内容均自动发布至此网站
项目功能
🤖 微信公众号自动回复
- 微信消息加签验证(Token 验证)
- 文本消息自动回复(英雄名查询、资源检索)
- 关注事件自动回复欢迎语
- 图文消息、图片消息回复
🎮 王者荣耀数据查询
通过微信公众号发送英雄名称,即可获取:
- 英雄信息:别名、定位、职业、攻击范围、身高
- 英雄关系:各英雄之间的关系网
- 核心出装:3 套大神出装搭配(含胜率、登场率)
- 铭文搭配:3 套推荐铭文方案(含每一级铭文详细配置)
- 技能介绍:被动技能、1/2/3 技能详细说明(含冷却时间、消耗)
- 克制关系:克制英雄与被克制英雄(含克制指数)
- 组排推荐:双排/三排英雄组合推荐
- 英雄故事:完整背景故事
- 打法攻略:英雄使用技巧
- 最低战力表:英雄最低战力数据
🖼️ 壁纸资源管理
- 王者荣耀壁纸:全英雄全皮肤壁纸(支持电脑/手机版)
- 英雄联盟壁纸:全英雄全皮肤壁纸
- 壁纸自动检测、更新、入库
- 每张壁纸自动生成短链接
- 夸克网盘资源分享链接管理
🔊 语音包资源管理
- 王者荣耀全英雄全皮肤语音包(台词+录音)
- 语音包数量自动检测与更新
- 语音包与数据库同步
📝 WordPress 内容自动发布
- 壁纸文章:自动为每个英雄创建/更新壁纸专辑页面
- 语音包文章:自动为每个英雄创建/更新语音包页面
- 攻略文章:自动生成英雄攻略页面(含出装铭文、技能、克制等)
- 每日更新:每日壁纸/语音包更新文章
- 分类目录页:自动更新壁纸/攻略/语音包首页导航
🖼️ 出装图自动生成
- 使用 Pillow 库自动生成英雄出装推荐图(PNG 格式)
- 包含装备图标、铭文图标、英雄头像
- 三套出装方案 + 三套铭文方案
⏰ 定时任务系统
- 内置 Cron 表达式调度器,无需外部依赖
- 每日自动更新:
- 10:00 - 英雄数据、大神出装、壁纸 v1、壁纸 v2
- 10:30 - LOL 壁纸
- 10:40 - 英雄故事(每 3 天)
- 11:45 - 语音包
- 任务去重(基于文件锁)
- 超时保护(2400 秒自动终止)
🗄️ 数据库模型
- 英雄名称表(含别名映射)
- 胜率数据表
- 技能介绍表
- 核心出装表
- 铭文搭配表
- 克制关系表
- 组合推荐表
- 英雄介绍表
- 攻略技巧表
- 壁纸库(王者 + LOL)
- 语音包库
- 装备/铭文图标库
- 关键词回复表
- 夸克网盘链接表
- 公众号素材/文章管理表
- WordPress 文章发布记录表
技术栈
后端框架
| 技术 | 用途 |
|---|---|
| Django 2.2 | Web 框架 |
| MySQL | 数据库 |
| PyMySQL / MySQLdb | MySQL 驱动 |
数据处理
| 技术 | 用途 |
|---|---|
| Requests | HTTP 请求(爬取游戏数据) |
| BeautifulSoup4 | HTML 解析 |
| PyQuery | HTML/XML 解析(类似 jQuery) |
| Pillow (PIL) | 图片处理(生成出装图) |
| lxml | XML 解析(微信消息) |
第三方服务
| 技术 | 用途 |
|---|---|
| WordPress XML-RPC | 自动发布文章到 WordPress 站点 |
| 微信公众平台 API | 自动回复、素材管理、草稿发布 |
| 腾讯王者荣耀 API | 英雄数据、出装、铭文、技能等数据 |
| 腾讯 LOL API | 英雄联盟壁纸数据 |
| QQ 机器人 API | 错误通知推送 |
| Server酱 / 方糖 | 微信推送通知 |
其他
| 技术 | 用途 |
|---|---|
| Threading | 异步后台任务处理 |
| Concurrent Futures | 带超时的线程池管理 |
| RotatingFileHandler | 日志轮转 |
| ctypes | 内存回收(libc malloc_trim) |
项目结构
Bash/Shell
pub_zqwz/
├── env.py # 数据库配置(已脱敏)
├── env.py.example # 配置模板
├── manage.py # Django 管理入口
├── requirements.txt # 依赖清单
├── .gitignore # Git 忽略规则
├── pub_zqwz/ # Django 项目配置
│ ├── settings.py # 项目设置
│ ├── urls.py # 根路由
│ ├── config.py # 全局配置(常量、请求头、XML 模板)
│ ├── wsgi.py # WSGI 入口
│ └── logger.py # 日志系统
├── app_auto_reply/ # 主应用
│ ├── views.py # 微信公众号消息入口
│ ├── models.py # 数据库模型
│ ├── urls.py # API 路由
│ ├── scheduler.py # 定时任务调度器
│ ├── scheduled_tasks.py # 定时任务定义
│ ├── utils.py # 工具函数(后台线程、内存释放)
│ ├── plugins/ # 回复插件
│ │ ├── auto_reply.py # 自动回复逻辑
│ │ ├── keys_menu.py # 关键词查询
│ │ ├── wz_wall.py # 壁纸查询
│ │ └── wz_voice.py # 语音包查询
│ └── api/ # 业务 API
│ ├── public.py # 公共函数(推送通知、短链接)
│ ├── up_wz_wall.py # 王者壁纸更新 v1
│ ├── up_wz_wall_v2.py# 王者壁纸更新 v2
│ ├── up_wz_hero.py # 英雄列表更新
│ ├── up_wz_heroinfo.py/up_wz_hero_info_api.py # 英雄信息更新
│ ├── up_wz_voice.py # 语音包更新
│ ├── up_wz_gs.py # 英雄故事更新
│ ├── up_wz_day.py # 每日壁纸/语音
│ ├── up_wz_mw_icon.py# 铭文图标更新
│ ├── up_wz_zb_icon.py# 装备图标更新
│ ├── create_wz_czpic.py # 出装图生成
│ ├── up_lol_wall.py # LOL 壁纸更新
│ ├── pub/ # 公众号发布
│ │ ├── pub_fb_article.py # 微信素材/草稿管理
│ │ └── pub_fb_article_api.py # 发布接口
│ └── wp/ # WordPress 发布
│ ├── wp_sql.py # WP 数据库操作
│ ├── post_article.py # 文章发布
│ ├── post_wz_article.py # 王者壁纸/语音文章
│ ├── post_lol_article.py # LOL 壁纸文章
│ ├── post_pub_day_article.py # 每日更新文章
│ ├── up_wzry_wall_ym.py # 王者页面导航更新
│ └── up_ym_lol.py # LOL 页面导航更新
├── WZSC/ # 静态资源
│ ├── ARLRDBD.TTF # 字体文件
│ ├── msyhbd.ttc # 微软雅黑粗体
│ ├── logo.png # Logo
│ ├── ICON/HERO/ # 英雄头像
│ ├── ICON/ZB/ # 装备图标
│ ├── ICON/MW/ # 铭文图标
│ └── HEROINFO/ # 英雄数据缓存
└── log/ # 日志文件
快速开始
前置要求
- Python 3.6+
- MySQL 5.7+
- WordPress 站点(用于文章发布,可选)
安装步骤
Bash/Shell
# 1. 克隆项目
git clone https://github.com/your-username/pub_zqwz.git
cd pub_zqwz
# 2. 安装依赖
pip install -r requirements.txt
# 3. 配置数据库
cp env.py.example env.py
# 编辑 env.py 填入你的数据库信息
# 4. 初始化数据库
python manage.py migrate
# 5. 启动服务
python manage.py runserver 0.0.0.0:8000
配置文件
编辑 env.py 配置以下信息:
Python
# Django 数据库
NAME = 'your_db_name'
USER = 'your_db_user'
PASSWORD = 'your_db_password'
HOST = 'your_db_host'
PORT = '3306'
# WordPress 数据库(可选)
wp_host = 'your_wp_host'
wp_user = 'your_wp_user'
wp_passwd = 'your_wp_password'
wp_db = 'your_wp_database'
# 站点域名
SITE_DOMAIN = 'your-domain.com'
# API 密钥
API_KEY = 'your-api-key'
部署
项目使用 DEBUG = False 模式,支持任意 ALLOWED_HOSTS。定时任务在 Django 启动时自动以守护线程运行。