告别记事本:一款开源的测试环境账号管理工具设计与实践

# 测试环境账号管理工具-需求文档

## 引言
  在日常测试工作中,环境账号分散在记事本、Excel、内部Wiki,每次切换环境都要翻半天;常用的测试工具网址(如 Mockaroo、SampleLib)收藏在浏览器书签里,换个电脑就得重新找;临时记录的测试要点和脚本路径更是散落各处。这些琐碎但又频繁使用的信息,严重拉低了测试效率。为此,我用 PySide6 结合AI开发了一款开源桌面小工具,将环境账号管理、常用名片自定义和记事本集成在一个面板中,并支持窗口置顶,真正告别记事本式的低效管理。

## 项目结构
```
项目目录/
├── conf/
│   └── data.json          # 配置文件(JSON格式)
├── log/
│   └── app.log         # 运行日志
├── notes/              # 笔记文件目录
├── src/               # 源代码
│   ├── main.py        # 主入口
│   ├── ui_mainwindow.py # UI定义
│   ├── app_controller.py # 业务逻辑
│   ├── data_store.py   # 数据存储
│   └── logger_config.py # 日志配置
├── test_tools.ui       # Qt Designer UI文件
└── requirements.txt   # 依赖包
```

## 需求简介
> 面板功能点从上到下开始说明
1. 环境账号管理(切换环境、多个账户、复制、网址内容、密码密文、新增/保存/删除)
2. 常用名片自定义(新增、保存、删除、跳转、复制)
3. 记事本(保存、切换笔记、打开目录)
4. 窗口置顶功能

## 功能点详解

### 3.1 环境账号管理
功能描述:

切换环境(dev / test / staging 等)

每个环境下可存多个账户

每个账户包含:环境名称、账户名称、网址、账号、密码(密文显示)

一键复制网址 / 账号 / 密码

环境名称和账户名称可直接编辑修改

- 账户名称未修改时:修改当前账户的账号和密码
- 账户名称被修改时:弹出确认对话框,点击确认后新增账户(账号和密码置空)

环境保存(新增/保存/删除环境)

技术实现:

数据存储:JSON 文件(conf/data.json)

UI 组件:QComboBox 切换环境(setEditable=True)

密码输入框:QLineEdit.EchoMode.Password

复制功能:QApplication.clipboard()

按钮组:新增、保存、删除(环境级别操作)

### 3.2 常用名片自定义
功能描述:

可添加多个名片(网址 / 路径 / 下载链接等)

每个名片包含:标题、内容(URL或命令)

支持复制文本

支持新增/保存/删除,但最少保留一个,默认"测试数据生成"不可删除,但可以修改,内容为https://www.mockaroo.com/

支持打开跳转(使用系统默认浏览器打开)

示例内置:

测试数据生成 → https://www.mockaroo.com/

测试文件生成 → https://samplelib.com/zh/

技术实现:

删除时校验条目数量,阻止删除最后一个预设项

使用 QDesktopServices.openUrl() 实现跳转

按钮组:保存、新增、删除、跳转(打开链接)

### 3.3 记事本
功能描述:

简单的文本编辑区域

支持保存到本地文件(notes目录)

支持切换不同笔记文件

支持打开笔记目录

技术实现:

QPlainTextEdit 配合 QPushButton 保存/加载

### 3.4 窗口置顶功能
QPushButton 切换窗口置顶

技术点:setWindowFlags(Qt.WindowType.WindowStaysOnTopHint) 后需要调用 show()

## 技术栈
- Python 3.11+
- PySide6 6.5.0+
- loguru 0.7.0+

## 数据格式
```json
{
  "environments": [
    {
      "name": "dev",
      "accounts": [
        {"name": "admin", "host": "http://dev.example.com", "account": "admin", "password": "123456"}
      ]
    }
  ],
  "cards": [
    {"title": "测试数据生成", "content": "https://www.mockaroo.com/"},
    {"title": "测试文件生成", "content": "https://samplelib.com/zh/"}
  ]
}
```

评论