python.jpg
背景
工作中經(jīng)常遇到一個小環(huán)節(jié)--測試數(shù)據(jù)驗(yàn)證儿捧。
例如檢測游戲是否接入支付接口。
- 運(yùn)營人員從CP那邊拿到游戲交給測試人員測試挑宠。
- 測試人員測試充值菲盾;并發(fā)郵件出來需要數(shù)據(jù)驗(yàn)證。
- 技術(shù)進(jìn)行數(shù)據(jù)查詢并驗(yàn)證各淀;并郵件告知是否接入支付接口懒鉴。
若驗(yàn)證失敗碎浇;上面的環(huán)節(jié)又要重復(fù)一遍临谱。若在 第一步 能進(jìn)行數(shù)據(jù)驗(yàn)證工作。這樣就可以釋放后面兩個步驟奴璃;也避免驗(yàn)證失敗需要回退悉默;這樣提高工作效率,節(jié)約時間苟穆。但運(yùn)營人員非技術(shù)抄课;所以需要類似小工具進(jìn)行操作驗(yàn)證。
image.png
如何自制小工具
我選擇的是Pyqt5雳旅;Pyqt5是Qt移植到Python上的跟磨。提供了一個良好的窗口控件集合。
安裝環(huán)境操作:http://www.reibang.com/p/20f8da41af91
# 可使用douban鏡像快速下載pyqt5
pip install -i https://pypi.douban.com/simple pyqt5
pip install -i https://pypi.douban.com/simple pyqt5-tools
學(xué)習(xí)資料:http://www.xdbcb8.com/pyqt5/
百度云下載 PyQt5快速開發(fā)與實(shí)戰(zhàn).pdf提取碼:qay5
1. 采用QT Designer設(shè)計界面
image.png
2. 編譯ui文件
設(shè)計好了界面攒盈;保存文件為lottu06.ui抵拘;需要編譯成py文件。在 cmd 命令行執(zhí)行
pyuic5 -o E:\pyqt\lottu06.py E:\pyqt\lottu06.ui
3. 編寫信號與槽
本例填寫appid型豁,qn僵蛛。再點(diǎn)擊按鈕;彈出對話框提示偷遗。
在生成的lottu06.py文件進(jìn)行添加
#對按鈕 添加信號
self.pushButton.clicked.connect(Form.lottu)
# 編寫槽方法
def lottu(self):
try:
username =UserName
passname = PWD
ip = IP
datebasename = Oracle服務(wù)名
ipport = 端口
connStatus = 'OK'
conStr = username+'/'+passname+'@'+ip+':'+ipport+'/'+datebasename
conn = oracle.connect(conStr)
appid = self.lineEdit.text()
qn = self.lineEdit_2.text()
if self.radioButton.isChecked():
sql = "select count(1) from tbl_android_pay_log where appid =" + appid + " and qn = '" + qn + "' and pay_time >= trunc(sysdate)"
else:
sql = "select count(1) from tbl_ios_pay_log where appid =" + appid + " and qn = '" + qn + "' and pay_time >= trunc(sysdate)"
cursor = conn.cursor()
cursor.execute(sql)
result = cursor.fetchone()
if result[0] == 0:
QMessageBox.information(self, '信息提示框', 'NO, 未接支付接口')
else:
QMessageBox.information(self, '信息提示框', 'OK, 成功接支付')
cursor.close()
conn.close()
except oracle.Error as e:
connStatus = e
print(connStatus)
本例連的數(shù)據(jù)庫是Oracle墩瞳;還需要安裝 cx_Oracle驼壶;
在使用界面與邏輯分離氏豌;編寫lottu.py文件
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from lottu06 import Ui_Form
class MyMainWindow(QMainWindow, Ui_Form):
def __init__(self, parent=None):
super(MyMainWindow, self).__init__(parent)
self.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
myWin = MyMainWindow()
myWin.show()
sys.exit(app.exec_())
4. 執(zhí)行結(jié)果
image.png
5. 使用pyinstaller打包成exe
# 【拓展】在命令行執(zhí)行
pyinstaller -F -w -i E:\pyqt\images\cartoon1.ico E:\pyqt\lottu.py
即可以生成桌面小工具exe文件。
填寫對應(yīng)的appid热凹,qn即可泵喘。
image.png
加載dll資源
由于python中連接oracle數(shù)據(jù)庫使用第三方庫文件cx_Oracle泪电;上面生成的小工具exe;在未安裝Oracle客戶端的電腦執(zhí)行會報錯"DPI-1407"的錯誤碼纪铺。你若把文件 oci.dll相速,oraociei11.dll拷貝到對應(yīng)的目錄下也是可以執(zhí)行成功。為你機(jī)智點(diǎn)贊鲜锚。當(dāng)然可以使用pyinstaller打包附帶DLL突诬、圖標(biāo)和壓縮EXE方法
- 生成spec配置文件
cd /d e:\pyqt
pyinstaller -F E:\pyqt\lottu.py
- 配置spec配置文件
在datas行修改
datas=[('oci.dll','.'),('oraociei11.dll','.')]
- 利用upx命令壓縮exe
upx下載
其中E:\tool\upx391w為upx下載解壓目錄
pyinstaller -F E:\pyqt\lottu.spec --upx E:\tool\upx391w
- 生成exe工具
這個時候測試的工具帶有的dll
pyinstaller -F -w E:\pyqt\lottu.spec