摘要:文章目錄數據個數以及保存文件處理代碼框架后續研發測試工具的思路數據個數以及保存文件處理默認顯示在一個彈出窗體中將保存的數據存入指定文件中清空界面上所有文件的內容根據需要的數量生成測試數據,根據選擇確認是否要保存成文件依
(1)默認顯示在一個彈出窗體中
(2)將保存的數據存入指定文件中
(3)清空界面上所有文件的內容
(4)根據需要的數量生成測試數據,根據選擇確認是否要保存成文件
# V4.0 依據組成格式進行測試數據的創建import wximport string, randomimport csv# 定義類class GUI_CreatData: # 類的初始化 def __init__(self): # 初始化APP self.app = wx.App() # 定義窗體 self.window = wx.Frame(None, title="試驗", size=(500, 500)) # 定義panel self.panel = wx.Panel(self.window) # 定義標簽 self.lblmin = wx.StaticText(self.panel, label="最小長度") # 定義文本框 self.txtmin = wx.TextCtrl(self.panel) # 定義標簽 self.lblmax = wx.StaticText(self.panel, label="最大長度") # 定義文本框 self.txtmax = wx.TextCtrl(self.panel) # 定義復選框 self.chkB1 = wx.CheckBox(self.panel, label="包含大寫字母") self.chkB2 = wx.CheckBox(self.panel, label="包含小寫字母") self.chkB3 = wx.CheckBox(self.panel, label="包含數字") self.chkB4 = wx.CheckBox(self.panel, label="包含符號") self.chkB5 = wx.CheckBox(self.panel, label="包含序號") self.chkB6 = wx.CheckBox(self.panel, label="包含郵箱后綴") self.chkB7 = wx.CheckBox(self.panel, label="保存到文件") # 定義標簽 self.lblfile = wx.StaticText(self.panel, label="文件名及路徑") # 定義文本框 self.txtfile = wx.TextCtrl(self.panel) # 定義標簽 self.lblshu = wx.StaticText(self.panel, label="數據總數") # 定義文本框,通過value屬性給了一個默認值 self.txtshu = wx.TextCtrl(self.panel, value="1") # 定義2個按鈕 self.butOK = wx.Button(self.panel, label="確定") self.butreset = wx.Button(self.panel, label="重置") # 控件布局 def layout(self): # 設置布局 box1 = wx.BoxSizer() # 默認是橫向的 box1.Add(self.lblmin, flag=wx.LEFT | wx.TOP, border=10) box1.Add(self.txtmin, flag=wx.LEFT | wx.TOP, border=10) box1.Add(self.lblmax, flag=wx.LEFT | wx.TOP, border=10) box1.Add(self.txtmax, flag=wx.LEFT | wx.TOP, border=10) # 設置第二行的布局 box2 = wx.BoxSizer() # 默認是橫向的 box2.Add(self.chkB1, flag=wx.LEFT | wx.TOP, border=10) box2.Add(self.chkB2, flag=wx.LEFT | wx.TOP, border=10) # 設置第三行的布局 box3 = wx.BoxSizer() # 默認是橫向的 box3.Add(self.chkB3, flag=wx.LEFT | wx.TOP, border=10) box3.Add(self.chkB4, flag=wx.LEFT | wx.TOP, border=10) # 設置第四行的布局 box4 = wx.BoxSizer() # 默認是橫向的 box4.Add(self.chkB5, flag=wx.LEFT | wx.TOP, border=10) box4.Add(self.chkB6, flag=wx.LEFT | wx.TOP, border=10) # 設置第五行的布局 box5 = wx.BoxSizer() # 默認是橫向的 box5.Add(self.chkB7, flag=wx.LEFT | wx.TOP, border=10) box5.Add(self.lblfile, flag=wx.LEFT | wx.TOP, border=10) box5.Add(self.txtfile, flag=wx.LEFT | wx.TOP, border=10) # 設置第六行的布局 box6 = wx.BoxSizer() # 默認是橫向的 box6.Add(self.lblshu, flag=wx.LEFT | wx.TOP, border=10) box6.Add(self.txtshu, flag=wx.LEFT | wx.TOP, border=10) # 設置第七行的布局 box7 = wx.BoxSizer() # 默認是橫向的 box7.Add(self.butOK, flag=wx.LEFT | wx.TOP, border=10) box7.Add(self.butreset, flag=wx.LEFT | wx.TOP, border=10) # 設置垂直布局 boxFinal = wx.BoxSizer(wx.VERTICAL) for i in range(1, 8): boxFinal.Add(eval(f"box{i}")) # eval函數將字符串轉換為對象 self.panel.SetSizer(boxFinal) # 事件綁定:綁定確定按鈕對應的事件 def eventbind(self): self.butOK.Bind(wx.EVT_BUTTON, self.checkinput) self.butreset.Bind(wx.EVT_BUTTON, self.reset) # 事件:對界面進行校驗.這是一個事件,用來綁定按鈕的,所以入參里面需要帶一個event # 事件:對界面進行校驗 def checkinput(self, event): # 對長度進行校驗,并生成指定的測試數據 self.checklen() # 沒有選擇任何條件,默認生成字母串 check_result = self.nonemethod() # 對輸入的數量進行校驗 number = self.checknum() # 如果沒選條件,且數量不等于0 str1 = "" if check_result == 0 and number != 0: for i in range(1, number + 1): re = self.creatdata() str1 = str1 + re + "/n" print(str1) # 如果沒有選擇“保存到文件”, if not self.chkB7.GetValue(): # 則彈出對話框,顯示生成 self.showdata(str1) else: # 調用文件保存方法 self.savefile(str1) # 如果選了條件,且數量也不等于0 elif check_result != 0 and number != 0: for i in range(1, number + 1): re = self.creatdatamethod(i) str1 = str1 + re + "/n" print(str1) # 如果沒有選擇“保存到文件”, if not self.chkB7.GetValue(): # 則彈出對話框,顯示生成 self.showdata(str1) else: # 調用文件保存方法 self.savefile(str1) # 文件保存方法 def savefile(self, data): # 首先判斷文件名文本框是否輸入合法的路徑及文件名內容 filetmp = self.txtfile.GetValue() # 如果文件路徑為空 if filetmp == "": # 則設置一個錯誤提示彈框 dlg = wx.MessageDialog(None, "請輸入文件名及路徑!", "錯誤信息", wx.YES_DEFAULT | wx.ICON_QUESTION) # 如果選擇yes if dlg.ShowModal() == wx.ID_YES: # 則關閉彈框 dlg.Destroy() return 0 # 路徑及文件名正確 else: # 創建一個文件 file = open(filetmp, "w", newline="") # 創建編輯器 write = csv.writer(file) # 用編輯器寫入內容 for element in data.split("/n"): write.writerow([element]) # write.writerow(element) # 關閉文件 file.close() # 在新窗口總顯示數據 def showdata(self, re): # 創建一個窗口 self.window = wx.Frame(None, title="顯示測試數據", size=(800, 300)) # 創建一個面板(面板里面用來設置各種你想要的控件) self.panel = wx.Panel(self.window) # 在面板中設置一個文本框,然后定義其相關屬性 wx.TextCtrl(self.panel, value=f"{re}/n", style=wx.TE_MULTILINE, size=(400, 300)) # 文本控件顯示多行 # 最后呈現窗口 self.window.Show(True) # 校驗輸入的數量 def checknum(self): # 判斷數量的文本框是否為空 if self.txtshu.GetValue() == "" or int(self.txtshu.GetValue()) <= 1: # 彈出錯誤提示框 dlg = wx.MessageDialog(None, "請輸入數量為大于1的整數!", "錯誤信息", wx.YES_DEFAULT | wx.ICON_QUESTION) if dlg.ShowModal() == wx.ID_YES: dlg.Destroy() else: number = int(self.txtshu.GetValue()) return number # 根據選擇的條件生成數據 def creatdatamethod(self, number): # 判斷生成的是哪些條件self.check_list emaildata = ["@qq.com", "@126.com", "@163.com", "@sina.com"] self.no = f"{number}" str1 = "" if "up" in self.check_list: str1 = str1 + string.ascii_uppercase * 3 if "low" in self.check_list: str1 = str1 + string.ascii_lowercase * 3 if "num" in self.check_list: str1 = str1 + string.digits * 3 if "pnu" in self.check_list: str1 = str1 + string.punctuation * 3 num = random.randint(int(self.minlen), int(self.maxlen)) # 如果你在界面選擇了至少一個條件,那么按照指定規則生成 if str1 != "": resultdata = "".join(random.sample(str1, num)) # 如果什么都沒有選,則自動生成一個 else: resultdata = self.creatdata() if "no" in self.check_list: resultdata = self.no + resultdata if "email" in self.check_list: # 任意取出一個郵箱后綴 resultdata = resultdata + random.choice(emaildata) # print(resultdata) return resultdata # 判斷最小長度和最大長度 def checklen(self): # 判斷最小長度輸入是否為空 self.minlen = self.txtmin.GetValue().strip() # 去除左右兩邊的空格 self.maxlen = self.txtmax.GetValue().strip() if self.minlen == "": # 給出提示 dlg = wx.MessageDialog(None, "最小長度不能為空!", "錯誤信息", wx.YES_DEFAULT | wx.ICON_QUESTION) if dlg.ShowModal() == wx.ID_YES: dlg.Destroy() return 0 # 判斷最大長度輸入是否為空 elif self.maxlen == "": # 給出提示 dlg = wx.MessageDialog(None, "最大長度不能為空!", "錯誤信息", wx.YES_DEFAULT | wx.ICON_QUESTION) if dlg.ShowModal() == wx.ID_YES: dlg.Destroy() return 0 elif int(self.minlen) > int(self.maxlen): # 給出提示 dlg = wx.MessageDialog(None, "最大長度不能小于最小長度!", "錯誤信息", wx.YES_DEFAULT | wx.ICON_QUESTION) if dlg.ShowModal() == wx.ID_YES: dlg.Destroy() return 0 # 調用生成測試數據,調測用 # if self.minlen != "" and self.maxlen != "" and int(self.minlen) <= int(self.maxlen): # self.creatdata() # 沒有選擇任何ch框生成子母傳 def nonemethod(self): # 如果大寫字母框被選擇 self.check_list = [] if self.chkB1.GetValue(): self.check_list.append("up") if self.chkB2.GetValue(): self.check_list.append("low") if self.chkB3.GetValue(): self.check_list.append("num") if self.chkB4.GetValue(): self.check_list.append("pnu") if self.chkB5.GetValue(): self.check_list.append("no") if self.chkB6.GetValue(): self.check_list.append("email") # print(self.check_list) # 判斷list列表是否為空 if len(self.check_list) == 0: return 0 else: return 1 # 事件:把界面的內容清空[添加詢問ing] def reset(self, event): # dlg = wx.MessageDialog(None, "是否需要刪除?", "提示信息", wx.YES_NO) # if dlg.ShowModal() == wx.ID_YES: # dlg.Destroy() # return 0 self.txtmin.SetValue("") self.txtmax.SetValue("") # 將選擇的框全部清空 self.chkB1.SetValue(False) self.chkB2.SetValue(False) self.chkB3.SetValue(False) self.chkB4.SetValue(False) self.chkB5.SetValue(False) self.chkB6.SetValue(False) # 創建測試數據 def creatdata(self): num = random.randint(int(self.minlen), int(self.maxlen)) str1 = string.ascii_letters+string.digits+string.ascii_letters+string.digits resultdata = "".join(random.sample(str1, num)) # print(resultdata) return resultdata # 運行app def run(self): self.window.Show(True) self.app.MainLoop()if __name__ == "__main__": gui = GUI_CreatData() gui.layout() gui.eventbind() gui.run()
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121751.html
摘要:創建測試環境并導入到用例集操作步驟如下動態圖創建測試環境并導入到用例集動態圖說明第一個頁面為測試項目列表頁面。第三個頁面為前置用例集列表頁面。 本文內容: 測試腳本管理:講述如何在 EOLINKER 上設計測試項目目錄結構。 編寫測試腳本:講述如何在 EOLINKER 上編寫接口測試腳本。 測試腳本執行及報告:講述如何在 EOLINKER 上執行接口測試腳本,及如何查看和下載測試報告...
摘要:創建測試環境并導入到用例集操作步驟如下動態圖創建測試環境并導入到用例集動態圖說明第一個頁面為測試項目列表頁面。第三個頁面為前置用例集列表頁面。 本文內容: 測試腳本管理:講述如何在 EOLINKER 上設計測試項目目錄結構。 編寫測試腳本:講述如何在 EOLINKER 上編寫接口測試腳本。 測試腳本執行及報告:講述如何在 EOLINKER 上執行接口測試腳本,及如何查看和下載測試報告...
閱讀 3142·2021-10-08 10:04
閱讀 1080·2021-09-30 09:48
閱讀 3449·2021-09-22 10:53
閱讀 1664·2021-09-10 11:22
閱讀 1682·2021-09-06 15:00
閱讀 2142·2019-08-30 15:56
閱讀 704·2019-08-30 15:53
閱讀 2273·2019-08-30 13:04