欢迎光临
我们一直在努力

UCloud云社区测试工具研发_脚本(最终版):数据个数以及保存文件的处理1、V4.0 数据个数以及保存文件处理2、4.0代码框架3、后续研发测试工具的思路

文章目录

  • 1、V4.0 数据个数以及保存文件处理
  • 2、4.0代码框架
  • 3、后续研发测试工具的思路

1、V4.0 数据个数以及保存文件处理

(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()

2、4.0代码框架

请添加图片描述

请添加图片描述

3、后续研发测试工具的思路

请添加图片描述

赞(0)
未经允许不得转载:优乐评测网 » UCloud云社区测试工具研发_脚本(最终版):数据个数以及保存文件的处理1、V4.0 数据个数以及保存文件处理2、4.0代码框架3、后续研发测试工具的思路

优乐评测网 找服务器 更专业 更方便 更快捷!

联系我们联系我们