成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

測(cè)試工具研發(fā)_腳本(最終版):數(shù)據(jù)個(gè)數(shù)以及保存文件的處理

jindong / 3231人閱讀

摘要:文章目錄數(shù)據(jù)個(gè)數(shù)以及保存文件處理代碼框架后續(xù)研發(fā)測(cè)試工具的思路數(shù)據(jù)個(gè)數(shù)以及保存文件處理默認(rèn)顯示在一個(gè)彈出窗體中將保存的數(shù)據(jù)存入指定文件中清空界面上所有文件的內(nèi)容根據(jù)需要的數(shù)量生成測(cè)試數(shù)據(jù),根據(jù)選擇確認(rèn)是否要保存成文件依

1、V4.0 數(shù)據(jù)個(gè)數(shù)以及保存文件處理

(1)默認(rèn)顯示在一個(gè)彈出窗體中
(2)將保存的數(shù)據(jù)存入指定文件中
(3)清空界面上所有文件的內(nèi)容
(4)根據(jù)需要的數(shù)量生成測(cè)試數(shù)據(jù),根據(jù)選擇確認(rèn)是否要保存成文件

# V4.0 依據(jù)組成格式進(jìn)行測(cè)試數(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="試驗(yàn)", 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="包含符號(hào)")        self.chkB5 = wx.CheckBox(self.panel, label="包含序號(hào)")        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屬性給了一個(gè)默認(rèn)值        self.txtshu = wx.TextCtrl(self.panel, value="1")        # 定義2個(gè)按鈕        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)換為對(duì)象        self.panel.SetSizer(boxFinal)    # 事件綁定:綁定確定按鈕對(duì)應(yīng)的事件    def eventbind(self):        self.butOK.Bind(wx.EVT_BUTTON, self.checkinput)        self.butreset.Bind(wx.EVT_BUTTON, self.reset)    # 事件:對(duì)界面進(jìn)行校驗(yàn).這是一個(gè)事件,用來綁定按鈕的,所以入?yún)⒗锩嫘枰獛б粋€(gè)event    # 事件:對(duì)界面進(jìn)行校驗(yàn)    def checkinput(self, event):        # 對(duì)長度進(jìn)行校驗(yàn),并生成指定的測(cè)試數(shù)據(jù)        self.checklen()        # 沒有選擇任何條件,默認(rèn)生成字母串        check_result = self.nonemethod()        # 對(duì)輸入的數(shù)量進(jìn)行校驗(yà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():                # 則彈出對(duì)話框,顯示生成                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():                # 則彈出對(duì)話框,顯示生成                self.showdata(str1)            else:                # 調(diào)用文件保存方法                self.savefile(str1)    # 文件保存方法    def savefile(self, data):        # 首先判斷文件名文本框是否輸入合法的路徑及文件名內(nèi)容        filetmp = self.txtfile.GetValue()        # 如果文件路徑為空        if filetmp == "":            # 則設(shè)置一個(gè)錯(cuò)誤提示彈框            dlg = wx.MessageDialog(None, "請(qǐng)輸入文件名及路徑!", "錯(cuò)誤信息", wx.YES_DEFAULT | wx.ICON_QUESTION)            # 如果選擇yes            if dlg.ShowModal() == wx.ID_YES:                # 則關(guān)閉彈框                dlg.Destroy()                return 0        # 路徑及文件名正確        else:            # 創(chuàng)建一個(gè)文件            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)建一個(gè)窗口        self.window = wx.Frame(None, title="顯示測(cè)試數(shù)據(jù)", size=(800, 300))        # 創(chuàng)建一個(gè)面板(面板里面用來設(shè)置各種你想要的控件)        self.panel = wx.Panel(self.window)        # 在面板中設(shè)置一個(gè)文本框,然后定義其相關(guān)屬性        wx.TextCtrl(self.panel, value=f"{re}/n", style=wx.TE_MULTILINE, size=(400, 300))  # 文本控件顯示多行        # 最后呈現(xiàn)窗口        self.window.Show(True)    # 校驗(yàn)輸入的數(shù)量    def checknum(self):        # 判斷數(shù)量的文本框是否為空        if self.txtshu.GetValue() == "" or int(self.txtshu.GetValue()) <= 1:            # 彈出錯(cuò)誤提示框            dlg = wx.MessageDialog(None, "請(qǐng)輸入數(shù)量為大于1的整數(shù)!", "錯(cuò)誤信息", 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))        # 如果你在界面選擇了至少一個(gè)條件,那么按照指定規(guī)則生成        if str1 != "":            resultdata = "".join(random.sample(str1, num))        # 如果什么都沒有選,則自動(dòng)生成一個(gè)        else:            resultdata = self.creatdata()        if "no" in self.check_list:            resultdata = self.no + resultdata        if "email" in self.check_list:            # 任意取出一個(gè)郵箱后綴            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, "最小長度不能為空!", "錯(cuò)誤信息", wx.YES_DEFAULT | wx.ICON_QUESTION)            if dlg.ShowModal() == wx.ID_YES:                dlg.Destroy()                return 0        # 判斷最大長度輸入是否為空        elif self.maxlen == "":            # 給出提示            dlg = wx.MessageDialog(None, "最大長度不能為空!", "錯(cuò)誤信息", 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, "最大長度不能小于最小長度!", "錯(cuò)誤信息", wx.YES_DEFAULT | wx.ICON_QUESTION)            if dlg.ShowModal() == wx.ID_YES:                dlg.Destroy()                return 0        # 調(diào)用生成測(cè)試數(shù)據(jù),調(diào)測(cè)用        # if self.minlen != "" and self.maxlen != "" and int(self.minlen) <= int(self.maxlen):        #     self.creatdata()    # 沒有選擇任何ch框生成子母?jìng)?/span>    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, "是否需要?jiǎng)h除?", "提示信息", 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)建測(cè)試數(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    # 運(yùn)行app    def run(self):        self.window.Show(True)        self.app.MainLoop()if __name__ == "__main__":    gui = GUI_CreatData()    gui.layout()    gui.eventbind()    gui.run()

2、4.0代碼框架

3、后續(xù)研發(fā)測(cè)試工具的思路

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/121751.html

相關(guān)文章

  • 使用 EOLINKER 進(jìn)行接口測(cè)試最佳路徑 (上)

    摘要:創(chuàng)建測(cè)試環(huán)境并導(dǎo)入到用例集操作步驟如下動(dòng)態(tài)圖創(chuàng)建測(cè)試環(huán)境并導(dǎo)入到用例集動(dòng)態(tài)圖說明第一個(gè)頁面為測(cè)試項(xiàng)目列表頁面。第三個(gè)頁面為前置用例集列表頁面。 本文內(nèi)容: 測(cè)試腳本管理:講述如何在 EOLINKER 上設(shè)計(jì)測(cè)試項(xiàng)目目錄結(jié)構(gòu)。 編寫測(cè)試腳本:講述如何在 EOLINKER 上編寫接口測(cè)試腳本。 測(cè)試腳本執(zhí)行及報(bào)告:講述如何在 EOLINKER 上執(zhí)行接口測(cè)試腳本,及如何查看和下載測(cè)試報(bào)告...

    lordharrd 評(píng)論0 收藏0
  • 使用 EOLINKER 進(jìn)行接口測(cè)試最佳路徑 (上)

    摘要:創(chuàng)建測(cè)試環(huán)境并導(dǎo)入到用例集操作步驟如下動(dòng)態(tài)圖創(chuàng)建測(cè)試環(huán)境并導(dǎo)入到用例集動(dòng)態(tài)圖說明第一個(gè)頁面為測(cè)試項(xiàng)目列表頁面。第三個(gè)頁面為前置用例集列表頁面。 本文內(nèi)容: 測(cè)試腳本管理:講述如何在 EOLINKER 上設(shè)計(jì)測(cè)試項(xiàng)目目錄結(jié)構(gòu)。 編寫測(cè)試腳本:講述如何在 EOLINKER 上編寫接口測(cè)試腳本。 測(cè)試腳本執(zhí)行及報(bào)告:講述如何在 EOLINKER 上執(zhí)行接口測(cè)試腳本,及如何查看和下載測(cè)試報(bào)告...

    plokmju88 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<