python—测试工具开发流程(4)—案例生成指定规则的邮箱:任务3,面向过程到面向对象的封装

  • 面向过程封装:
    • 代码:
      • # 生成邮件
        import random
        import string
        import csv
        
        
        def get_email(min_len,max_len,eamil_list):
            # 在指定长度内生成一个随机数
            num = random.randint(min_len,max_len)
            # 设定初始为空
            str_data = ''
            # 循环累加2此,
            for i in range(1, 20):
                str_data += string.ascii_letters
                str_data = str_data + string.digits + string.digits
            # 按随机数取获取随机字符串
            eamil_q = ''.join(random.sample(str_data,num))
            eamil_h = random.choice(eamil_list)
            # 把前缀和后缀进行拼接
            em_name = eamil_q + eamil_h
            # 输出对应用邮箱
            return em_name
        
        def save_emaildata(elist):
            #打开一个文件(newline='', 在新生成的行里直接写,不设置的话每行数据间就会有空行)
            file = open('eamilname.csv', 'w', newline='')
            # 需要先创建csv编辑器
            cw = csv.writer(file)
            # 从列表中一次取出数据,存入文件
            for i in elist:
                cw.writerow([i])
            # 关闭文件
            file.close()
        
        if __name__ == '__main__':
        
            elist = []
            min_num = int(input('请输入最小值:'))
            max_num = int(input('请输入最大值:'))
            count = int(input('请输入需要的个数:'))
            # 邮箱后缀
            eamil_hz = ['@qq.com', '@163.com', '@139.com', '@sohu.com', '@aliyun.com', '@189.com', '@hotmail.com',
                          '@gmail.com', '@sina.com', '@yahoo.com']
        
            for i in range(1,count+1):
                e_name = get_email(min_num,max_num,eamil_hz)
                # 存入列表中
                elist.append(e_name)
            
            # 调用写入csv功能
            save_emaildata(elist)

         

    • 代码运行流程图:

 

    • 面向过程与面向对象概念了解:
      • 面向过程,把输入输出放到main主函数中,处理-放到自定义函数中
      • 图示:
      • 面向对象:把属性,处理,封装到类中
        • 图示:
          •  

             

  •  面向对象的封装:
    • 类的设计分析脑图:
    • 类的设计图,调用流程图:



    • 代码:
      • # 面向对象进行邮箱数据获取的设计实现
        # v2版
        
        # 导入库
        import csv
        import string
        import random
        
        # 类的定义
        class create_emaildata():
            # 在类的初始化方法中定义属性
            def __init__(self,minlen,maxlen,count):
                self.minlen = minlen
                self.maxlen = maxlen
                self.count = count
                self.erex = ['@qq.com', '@163.com', '@139.com', '@sohu.com', '@aliyun.com', '@189.com', '@hotmail.com',
                          '@gmail.com', '@sina.com', '@yahoo.com']
                self.emaillist = []
            # 定义获取邮箱数据的方法
            def get_emaildata(self):
                # 在指定长度内生成一个随机数
                num = random.randint(self.minlen,self.maxlen)
                # 设定初始为空
                str_data = ''
                # 循环累加2此,
                for i in range(1, 20):
                    str_data += string.ascii_letters
                    str_data = str_data + string.digits + string.digits
                # 按随机数取获取随机字符串
                eamil_q = ''.join(random.sample(str_data, num))
                eamil_h = random.choice(self.erex)
                # 把前缀和后缀进行拼接
                emaildata = eamil_q + eamil_h
                # 输出对应用邮箱
                self.emaillist.append(emaildata)
        
            # 定义保存邮箱数据方法
            def save_file(self):
                # 打开一个文件(newline='', 在新生成的行里直接写,不设置的话每行数据间就会有空行)
                file = open('eamilname.csv', 'w', newline='')
                # 需要先创建csv编辑器
                cw = csv.writer(file)
                # 从列表中一次取出数据,存入文件
                for i in self.emaillist:
                    cw.writerow([i])
                # 关闭文件
                file.close()
        
        if __name__ == '__main__':
        
            # 赋值
            minlen = 5
            maxlen = 10
            count = 10
            # 实例化对象
            emobj = create_emaildata(minlen,maxlen,count)
            # 需要先获取cout属性值
            count = emobj.count
            # 定义变量,循环调用
            for i in range(1,count+1):
                emobj.get_emaildata()
            # 调用保存文件方法
            emobj.save_file()

         

posted @ 2023-01-17 22:39  沐沂  阅读(40)  评论(0)    收藏  举报