Python 作品展示

📌 项目入口

项目 地址
🧪 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

框架设计要点

  1. POM 分层:BasePage → 页面业务对象 → 用例;元素定位集中在页面对象,元素变更只改一处
  2. Driver 会话复用:conftest.py 提供会话级 fixture,整套用例共享一个浏览器,贴近生产回归场景
  3. 稳定等待:BasePage.get_text_by_wait / is_visible 使用显式等待;对必须保留的旧页面 sleep 集中为 bp.sleep()
  4. 数据与配置分离:账号/密码/URL 全部集中在 config/config.py,测试数据在 data/
  5. 跨端覆盖:PC 浏览器 + 移动端 User-Agent/窗口缩放 + 多 iframe 层级、window 切换

说明

测试环境地址、账号密码均为脱敏占位(*.example.com / admin_user / Demo@2024),
实际运行前请在 config/config.py 中配置真实环境。


项目二:公众号智能助手 🎮

项目地址:https://github.com/nqxing/pub_zqwz

声明:本项目为 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 启动时自动以守护线程运行。