學妹的問題
教妹寫工具,沒見過這么放肆的標題吧?“語不驚人死不休”,沒錯,本篇文章的標題就是這么酷炫,不然你怎么會點進來?
在學習的日子里很多青年脫坑,同時也有很多青年入坑,但入坑的時候可能沒有什么好的指導或者學習方法可能頭發掉的一發不可收拾……
博主有個學妹就遇到了相同的境遇,學妹被接口測試搞得頭暈目眩。

本着友好互助的原則,不顧女朋友的反對,本篇就根據筆者的理解自己邊寫邊教教學妹,先不說其它的了,你們先看文章,我去跪一會榴蓮。
了解常用的GUI庫
在開始進行實戰前,可簡單了解一下幾種常見的圖形化界面設計需要的庫:
-
Tkinter(是python最簡單的圖形化模塊)。
-
PyQt(是python最復雜也是使用最廣泛的圖形化模塊,PyQt的采用的是GPLv3),若使用該庫,則要求代碼是開源的,若是引用該庫,但是代碼非開源的,可能會面臨小麻煩。
-
PySide2 :Pyside2的LGPL協議要求動態鏈接可以閉源商用,一般情況下選擇該庫進行GUI設計。
環境安裝
pip install PySide2 #PySide2是一個GUI庫在,主要用於設計程序界面
pip install pyinstaller #pyinstaller主要用於將代碼打包成exe文件時使用的
若是直接安裝失敗,可百度豆瓣源地址進行安裝。
界面設計-輸出UI格式文件
對接口工具的頁面進行設計,設計完成后會形成一個UI格式的文件。本文實踐案例示范完成一個簡單的接口測試工具,界面設計如下圖,分為三個部分:
- 第一個部分:請求方法、請求地址、發送請求、清空數據;
- 第二個部分:請求頭、請求體;
- 第三個部分:響應信息頭、響應數據。
PySide2圖形工具相關組件和使用方法介紹:
a) 按鈕:pushButton
i. 點擊按鈕clicked()
b) 單行文本框:lineEdit
i. 獲取文本text()
ii. 用戶名或者其他需要明文顯示時,則可選擇echoMode=Normal
iii. 密碼類的需要直接“*”顯示,則可選擇echoMode=Password
iv. 密碼類的需要編輯時明文顯示,編輯結束則“*”顯示,則可選擇echoMode= PasswordEchoOnEdit
c) 多行文本框:QPlainTextEdit
i. 獲取多行文本:toPlainText()
ii. 設置提示文本:setPlaceholderText (‘提示文本’)
d) 文本瀏覽框:textBrowser
i. 獲取文本:toPlainText()
ii. 設置提示文本:setPlaceholderText (‘提示文本’)
e) 組合選擇框:QComBox
i. 通過addItem添加單個選項,通過addItems([,,])添加多個選項
ii. 通過setCurrentText('請選擇')設置默認當前選項的值
iii. 通過currentText()獲取選項框的當前值
f) 文本標簽:label
界面布局
界面布局說白了就是各個控件的位置區域調整,常見的布局有三種:水平布局、垂直布局、柵格布局。
水平布局:就是各個組件水平排列對齊
垂直布局:就是各個組件垂直排列對齊。
柵格布局:柵格布局與水平布局和垂直布局皆不一樣,網格布局內部通過一個無形的網格來對其中的控件進行布局。
最后為了能讓布局內的控件隨着窗口自動縮放,可在窗口空白區域(非控件區域)右鍵選擇任意一種布局即可。
代碼設計-輸出py格式文件
本項目的代碼可以分為兩個部分:
- 第一部分:引用設計好的界面組件
- 第二部分:接口請求的邏輯代碼
初始化圖形界面
引用圖形界面的元素的方式,跟進行UI自動化的元素定位有點類似:
1.定義通過ui對象
2.找到對應的元素名稱
3.對該元素進行相應的操作
調用圖形界面的整體過程如下:
1.創建app程序對象
2.獲取圖形對象:打開ui文件
3.讀取ui文件
4.加載ui文件內的對象
5.關閉ui文件
6.展示圖形界面
7.運行程序
業務邏輯處理
處理業務邏輯時,需要涉及到三個內容:
1.通過圖形界面獲取用戶數據
2.通過點擊事件觸發業務邏輯處理
3.將業務處理結果展示在圖形界面上
代碼說明
1.操作圖形界面的組件的格式
ui對象.組件的objectname.動作(通過“.”連接)。
2.初始化請求方法的選項值
GET\POST\PUT\DELETE。
3.定義接口請求函數
a) 通過圖形界面控件獲取用戶輸入的數據:獲取的數據是字符串格式,需要轉化為json格式;
b) 發起接口請求:利用request庫完成接口請求;
c) 獲取響應信息頭、響應數據;
d) 響應信息添加到圖形界面上展示:獲取到的數據通過append添加到文本瀏覽器前,需要對將數據轉為str格式。
4.定義清空數據函數
事先明確好,點擊清楚按鈕時,需要清空哪些控件的數據或將選擇框設置什么默認值。
本文設計點擊清空按鈕時做以下兩個操作:
1)清空響應信息頭、響應數據兩個文本框;
2) 重置請求方法選擇框的默認值為“請選擇”。
5.點擊按鈕綁定業務函數
點擊后通過connect()方法連接函數方法,格式:
-
ui對象按鈕:objectname. clicked.connect
-
發送按鈕:ui.send_pushButton.clicked.connect(send_request)
-
清空按鈕:ui.clear_pushButton.clicked.connect(clear)
項目打包
這樣可以避免代碼泄漏,方便他人使用工具。
程序寫好了后,圖形界面也設計好了之后,每次使用都要運行代碼閑的很麻煩,而且其他人還得拷貝你的代碼。
所以這個時候就可以用到“打包”的功能,通過打包將工具生成為一個exe程序,其他人可直接使用。具體過程如下。
1.進入項目的py文件夾目錄下,cmd打開命令窗口,執行打包命令:
pyinstaller -F RequestTool.py --hidden-import PySide2.QtXml
其中RequestTool.py為python代碼文件。
2.打包成功后本地可看到對應的文件夾如下:
3.將界面ui文件復制到dist文件夾目錄下。
4.雙擊運行exe文件即可。
如果運行程序時不需要后面的命令窗口(黑色窗口,可在進行打包時增加參數-w即可去除該窗口)。
項目實戰成果
項目內其他成員可直接運行打包好的的exe文件,即可使用接口測試工具V1.0。
結語
OK,到此完美解決了學妹的問題,如有需要了解軟件測試相關的其他內容,可到「 主頁 」進行查看學習~
同時,大家覺得深度不夠或者有錯誤還請見諒,建議評論區共同探討