摘要:文章目錄數(shù)據(jù)個數(shù)以及保存文件處理代碼框架后續(xù)研發(fā)測試工具的思路數(shù)據(jù)個數(shù)以及保存文件處理默認(rèn)顯示在一個彈出窗體中將保存的數(shù)據(jù)存入指定文件中清空界面上所有文件的內(nèi)容根據(jù)需要的數(shù)量生成測試數(shù)據(jù),根據(jù)選擇確認(rèn)是否要保存成文件依
(1)默認(rèn)顯示在一個彈出窗體中
(2)將保存的數(shù)據(jù)存入指定文件中
(3)清空界面上所有文件的內(nèi)容
(4)根據(jù)需要的數(shù)量生成測試數(shù)據(jù),根據(jù)選擇確認(rèn)是否要保存成文件
# V4.0 依據(jù)組成格式進(jìn)行測試數(shù)據(jù)的創(chuàng)建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) # 定義標(biāo)簽 self.lblmin = wx.StaticText(self.panel, label="最小長度") # 定義文本框 self.txtmin = wx.TextCtrl(self.panel) # 定義標(biāo)簽 self.lblmax = wx.StaticText(self.panel, label="最大長度") # 定義文本框 self.txtmax = wx.TextCtrl(self.panel) # 定義復(fù)選框 self.chkB1 = wx.CheckBox(self.panel, label="包含大寫字母") self.chkB2 = wx.CheckBox(self.panel, label="包含小寫字母") self.chkB3 = wx.CheckBox(self.panel, label="包含數(shù)字") 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="保存到文件") # 定義標(biāo)簽 self.lblfile = wx.StaticText(self.panel, label="文件名及路徑") # 定義文本框 self.txtfile = wx.TextCtrl(self.panel) # 定義標(biāo)簽 self.lblshu = wx.StaticText(self.panel, label="數(shù)據(jù)總數(shù)") # 定義文本框,通過value屬性給了一個默認(rèn)值 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): # 設(shè)置布局 box1 = wx.BoxSizer() # 默認(rèn)是橫向的 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) # 設(shè)置第二行的布局 box2 = wx.BoxSizer() # 默認(rèn)是橫向的 box2.Add(self.chkB1, flag=wx.LEFT | wx.TOP, border=10) box2.Add(self.chkB2, flag=wx.LEFT | wx.TOP, border=10) # 設(shè)置第三行的布局 box3 = wx.BoxSizer() # 默認(rèn)是橫向的 box3.Add(self.chkB3, flag=wx.LEFT | wx.TOP, border=10) box3.Add(self.chkB4, flag=wx.LEFT | wx.TOP, border=10) # 設(shè)置第四行的布局 box4 = wx.BoxSizer() # 默認(rèn)是橫向的 box4.Add(self.chkB5, flag=wx.LEFT | wx.TOP, border=10) box4.Add(self.chkB6, flag=wx.LEFT | wx.TOP, border=10) # 設(shè)置第五行的布局 box5 = wx.BoxSizer() # 默認(rèn)是橫向的 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) # 設(shè)置第六行的布局 box6 = wx.BoxSizer() # 默認(rèn)是橫向的 box6.Add(self.lblshu, flag=wx.LEFT | wx.TOP, border=10) box6.Add(self.txtshu, flag=wx.LEFT | wx.TOP, border=10) # 設(shè)置第七行的布局 box7 = wx.BoxSizer() # 默認(rèn)是橫向的 box7.Add(self.butOK, flag=wx.LEFT | wx.TOP, border=10) box7.Add(self.butreset, flag=wx.LEFT | wx.TOP, border=10) # 設(shè)置垂直布局 boxFinal = wx.BoxSizer(wx.VERTICAL) for i in range(1, 8): boxFinal.Add(eval(f"box{i}")) # eval函數(shù)將字符串轉(zhuǎn)換為對象 self.panel.SetSizer(boxFinal) # 事件綁定:綁定確定按鈕對應(yīng)的事件 def eventbind(self): self.butOK.Bind(wx.EVT_BUTTON, self.checkinput) self.butreset.Bind(wx.EVT_BUTTON, self.reset) # 事件:對界面進(jìn)行校驗.這是一個事件,用來綁定按鈕的,所以入?yún)⒗锩嫘枰獛б粋€event # 事件:對界面進(jìn)行校驗 def checkinput(self, event): # 對長度進(jìn)行校驗,并生成指定的測試數(shù)據(jù) self.checklen() # 沒有選擇任何條件,默認(rèn)生成字母串 check_result = self.nonemethod() # 對輸入的數(shù)量進(jìn)行校驗 number = self.checknum() # 如果沒選條件,且數(shù)量不等于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: # 調(diào)用文件保存方法 self.savefile(str1) # 如果選了條件,且數(shù)量也不等于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: # 調(diào)用文件保存方法 self.savefile(str1) # 文件保存方法 def savefile(self, data): # 首先判斷文件名文本框是否輸入合法的路徑及文件名內(nèi)容 filetmp = self.txtfile.GetValue() # 如果文件路徑為空 if filetmp == "": # 則設(shè)置一個錯誤提示彈框 dlg = wx.MessageDialog(None, "請輸入文件名及路徑!", "錯誤信息", wx.YES_DEFAULT | wx.ICON_QUESTION) # 如果選擇yes if dlg.ShowModal() == wx.ID_YES: # 則關(guān)閉彈框 dlg.Destroy() return 0 # 路徑及文件名正確 else: # 創(chuàng)建一個文件 file = open(filetmp, "w", newline="") # 創(chuàng)建編輯器 write = csv.writer(file) # 用編輯器寫入內(nèi)容 for element in data.split("/n"): write.writerow([element]) # write.writerow(element) # 關(guān)閉文件 file.close() # 在新窗口總顯示數(shù)據(jù) def showdata(self, re): # 創(chuàng)建一個窗口 self.window = wx.Frame(None, title="顯示測試數(shù)據(jù)", size=(800, 300)) # 創(chuàng)建一個面板(面板里面用來設(shè)置各種你想要的控件) self.panel = wx.Panel(self.window) # 在面板中設(shè)置一個文本框,然后定義其相關(guān)屬性 wx.TextCtrl(self.panel, value=f"{re}/n", style=wx.TE_MULTILINE, size=(400, 300)) # 文本控件顯示多行 # 最后呈現(xiàn)窗口 self.window.Show(True) # 校驗輸入的數(shù)量 def checknum(self): # 判斷數(shù)量的文本框是否為空 if self.txtshu.GetValue() == "" or int(self.txtshu.GetValue()) <= 1: # 彈出錯誤提示框 dlg = wx.MessageDialog(None, "請輸入數(shù)量為大于1的整數(shù)!", "錯誤信息", wx.YES_DEFAULT | wx.ICON_QUESTION) if dlg.ShowModal() == wx.ID_YES: dlg.Destroy() else: number = int(self.txtshu.GetValue()) return number # 根據(jù)選擇的條件生成數(shù)據(jù) 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)) # 如果你在界面選擇了至少一個條件,那么按照指定規(guī)則生成 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 # 調(diào)用生成測試數(shù)據(jù),調(diào)測用 # 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) # 判斷l(xiāng)ist列表是否為空 if len(self.check_list) == 0: return 0 else: return 1 # 事件:把界面的內(nèi)容清空[添加詢問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) # 創(chuàng)建測試數(shù)據(jù) 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()
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/121751.html
摘要:創(chuàng)建測試環(huán)境并導(dǎo)入到用例集操作步驟如下動態(tài)圖創(chuàng)建測試環(huán)境并導(dǎo)入到用例集動態(tài)圖說明第一個頁面為測試項目列表頁面。第三個頁面為前置用例集列表頁面。 本文內(nèi)容: 測試腳本管理:講述如何在 EOLINKER 上設(shè)計測試項目目錄結(jié)構(gòu)。 編寫測試腳本:講述如何在 EOLINKER 上編寫接口測試腳本。 測試腳本執(zhí)行及報告:講述如何在 EOLINKER 上執(zhí)行接口測試腳本,及如何查看和下載測試報告...
摘要:創(chuàng)建測試環(huán)境并導(dǎo)入到用例集操作步驟如下動態(tài)圖創(chuàng)建測試環(huán)境并導(dǎo)入到用例集動態(tài)圖說明第一個頁面為測試項目列表頁面。第三個頁面為前置用例集列表頁面。 本文內(nèi)容: 測試腳本管理:講述如何在 EOLINKER 上設(shè)計測試項目目錄結(jié)構(gòu)。 編寫測試腳本:講述如何在 EOLINKER 上編寫接口測試腳本。 測試腳本執(zhí)行及報告:講述如何在 EOLINKER 上執(zhí)行接口測試腳本,及如何查看和下載測試報告...
閱讀 3152·2021-10-08 10:04
閱讀 1088·2021-09-30 09:48
閱讀 3459·2021-09-22 10:53
閱讀 1679·2021-09-10 11:22
閱讀 1693·2021-09-06 15:00
閱讀 2152·2019-08-30 15:56
閱讀 715·2019-08-30 15:53
閱讀 2285·2019-08-30 13:04