WebService服務部署到了服務器,但是只能本地訪問,下載soapui有點太大了,找其他的測試工具又沒有合適的,就自己寫了個比較簡單的小工具!
- Python 3.14
- PySide6(Essentials)6.11
- loguru 0.7
- suds 1.2
- lxml 6.1
- PyYAML 6.0
- PyInstaller 6.22
- 安裝依賴:
$ uv sync - 啟動程式:
$ uv run python src/ws_tool.py - 執行測試:
$ uv run test(等同uv run pytest,額外參數會原樣傳入;會在reports/test-report.html產生可用瀏覽器開啟的測試報告) - 語法檢查:
$ uv run lint(對src、tests、plugins執行 ruff check) - UI 檢測工具(類似瀏覽器的「檢查元素」):
$ uv run python -m PyQtInspect --direct --file src/ws_tool.py - 打包 exe:
$ uv run build,完成後會在dist目錄產生WebService-Tool.exe;會自動把src/app_data/ws_tool.yaml複製到dist/app_data/ws_tool.yaml(每次 build 都會覆蓋,確保與 repo 一致)。connections.profile不會自動產生或複製,程式首次啟動時會自動建立空白的一份;若要沿用既有連線資料,散布時自行把connections.profile放進同一個dist/app_data/目錄uv run build會一併產生dist/plugins/settings_editor/(設定編輯器外掛,含 pyqtgraph、numpy);散布時放在 exe 同層即可使用 F11 設定頁,不附上則 F11 顯示「未安裝」。升級 pyqtgraph/numpy 時同步修改pyproject.toml的 dev 群組與plugins/settings_editor/build_plugin.py的版本,並執行uv run python plugins/settings_editor/gen_host_imports.py重新產生host_imports.txt - 封裝發行版本:
$ uv run package(先執行 build,再依ws_tool.yaml的app.version把dist壓縮成bin/WebService-Tool-vX.Y.Z.zip) - 清除打包產物:
$ uv run clean(清空dist目錄底下所有檔案,保留目錄本身);$ uv run clean-package(先 clean 再完整跑一次 build + package) - 暫時不支持mac環境打包,如果有想法也可以自己去找到合適的配套方案
pyproject.toml 的 [project.scripts] 把常用工作流程包成指令,對應 tasks/ 底下的模組:
| 指令 | 對應模組 | 說明 |
|---|---|---|
uv run test |
tasks/test.py |
轉呼叫 pytest;額外參數原樣傳入,並產生 reports/test-report.html 測試報告 |
uv run lint |
tasks/lint.py |
對 src、tests、plugins 執行 ruff check |
uv run build |
tasks/build.py |
用 PyInstaller 建置 WebService-Tool.exe,一併建置設定編輯器外掛並複製 ws_tool.yaml 到 dist |
uv run package |
tasks/package.py |
先執行 build,再依 app.version 把 dist 壓縮成發行用的 zip,放到 bin 目錄 |
uv run clean |
tasks/clean.py |
清空 dist 目錄底下的檔案(執行前會先關閉正在跑的 exe) |
uv run clean-package |
tasks/clean_package.py |
先 clean 再完整跑一次 build + package |
- 左側為連線清單(可搜尋、新增、刪除),可用目錄分組:拖曳或右鍵「移動到」把連線放進目錄、拖曳調整順序,右鍵「重新命名」修改目錄名稱
- 左下角「主題」可切換 跟隨系統 / 淺色 / 深色;「主控台」可開關右側下方的即時記錄面板(見下方說明)
- 快捷鍵:F1 新增連線、F2 刪除選取的連線或目錄、F3 讀取 WSDL、F5 執行、F6 清空、Ctrl+Shift+F 格式化請求、F11 工具參數設定(再按一次或 Esc 返回)、Ctrl+` 開關主控台、Esc 離開
- 按 F11 以樹狀表單編輯 app_data/ws_tool.yaml;名稱、版本、版權、圖示、逾時儲存後立即生效,log 與連線設定需重新啟動
- 按左下角「主控台」按鈕或 `Ctrl+``,在右側工作區下方開關可拖曳調整高度的記錄面板;工作區與 F11 設定頁共用同一個面板
- 即時顯示程式從啟動、讀取 WSDL、執行請求到關閉期間的記錄,開啟面板前的記錄也會補顯示
- 依 TRACE/DEBUG/INFO/SUCCESS/WARNING/ERROR/CRITICAL 七個等級篩選,每顆按鈕標示目前筆數,即使該等級被隱藏也看得出有幾筆;預設顯示 DEBUG、INFO、SUCCESS
- 可輸入關鍵字搜尋(不分大小寫),並提供清除、複製目前顯示內容
- 開關狀態、面板高度、篩選的等級會存到
settings.ini,下次啟動沿用;不影響app_data/logs/run.log本身的記錄等級(仍依ws_tool.yaml的app.log.level設定)
所有記錄檔都放在 ws_tool.yaml 的 app.log.path(預設 app_data/logs),每天自動歸檔為 名稱_YYYYMMDD.log,超過保留天數的歸檔會自動刪除。
| 檔案 | 內容 | 相關設定 |
|---|---|---|
run.log |
app.log.level 以上的所有記錄 |
level、retention |
ws_info.log/ws_debug.log/ws_error.log |
只收該等級 | levels、retention |
ws_other.log |
TRACE、SUCCESS、WARNING、CRITICAL | levels、retention |
ws_xml.log |
每次執行請求的參數+回應(或 SOAP 信封) | xml.enabled、xml.content、xml.retention |
按 F10 或側欄的紀錄按鈕開啟「請求紀錄」視窗,可依日期、連線、方法與關鍵字查詢,並把某一筆帶回工作區重新執行。
uv run build 打包時會自動執行,不需要手動處理:清空 build 目錄後,依 src/app_data/ws_tool.yaml 的 app.name/app.version/app.copyright 產生 build/file_version_info.txt,供 PyInstaller 的 --version-file 使用,讓打包出來的 WebService-Tool.exe「內容」分頁顯示的是本專案的名稱與版本,不是借來的範本。build 目錄不進版控,每次打包都會重新產生一次。
- 測試WebService接口(支持多參數,不支持添加請求頭)
- 主控台即時記錄查看:等級篩選、關鍵字搜尋,執行過程中的請求與例外一目了然,不必再另外開 log 檔
- 下載檔案:WebService.exe
| 收集請求資料內容 |
![]() |
| 執行請求參數取得回應資料 |
![]() |
| 主控台記錄面板範例圖 |
![]() |


