测试工具研发_脚本(3):生成指定规则的邮箱名


一、研发内容

1、v1.0 框架优化:面向过程思想

"""
V1.0 生成指定长度、指定数量的邮箱名
(1)以 面向过程 的思想进行获取邮箱账号的结构设计、
(2)输入定义到了main函数,输出定义到了get_emaildata\save_emaildata
"""
import csv
import random
import string


# 生成一个邮箱
def get_emaildata(minlen, maxlen, emaillist):
    # 为下面的服务
    num = random.randint(minlen, maxlen)
    str = ""
    for i in range(1, 31):
        str += string.ascii_letters + string.digits + string.ascii_lowercase
    # 核心代码,生成email
    email = "".join(random.sample(str, num))
    rex = random.choice(emaillist)
    email = email + rex
    return email


# 将列表的内容,保存到文件当中
def save_emaildata(elist):
    file = open("emaildata.csv", "w", newline="")
    write = csv.writer(file)
    for element in elist:
        write.writerow([element])
    file.close()


if __name__ == '__main__':

    minlen = int(input("请输入最小长度:"))
    maxlen = int(input("请输入最大长度:"))
    count = int(input("请输入需要的组数:"))

    emaillist = ["@qq.com", "@126.com", "@163.com", "@sina.com"]
    elist = []
    for i in range(1, count + 1):
        emaildata = get_emaildata(minlen, maxlen, emaillist)
        elist.append(emaildata)
    save_emaildata(elist)

2、v2.0 框架优化:面向对象思想

"""
V2.0 生成指定长度、指定数量的邮箱名
(1)以 面向对象 的思想进行获取邮箱账号的结构设计、
需要明确:类的数目、类命名、类属性、类方法(一个独立的处理过程)
"""
import csv
import random
import string


# 类的定义
class CreatEmail:

    # 在类的初始化方法中进行类的属性定义
    def __init__(self):
        self.minlen = 10
        self.maxlen = 10
        self.count = 10
        self.erex = ["@qq.com", "@126.com", "@163.com", "@sina.com"]
        self.elist = [] # 设置为空列表,第一个方法给这里返回数据,供给第二个方法用

    # 定义getemail方法
    def get_emaildata(self):
        # 为下面的服务
        num = random.randint(self.minlen, self.maxlen)
        str = ""
        for i in range(1, 31):
            str += string.ascii_letters + string.digits + string.ascii_lowercase
        # 核心代码,生成email
        email = "".join(random.sample(str, num))
        rex = random.choice(self.erex)
        email = email + rex
        self.elist.append(email)

    # 定义了保存数据到文件中的方法
    def save_emaildata(self):
        file = open("emaildata1.csv", "w", newline="")
        write = csv.writer(file)
        for element in self.elist:
            write.writerow([element])
        file.close()


if __name__ == '__main__':
    # 实例化类的对象
    emailobj = CreatEmail()
    # 获取count属性的值
    count = emailobj.count
    # 定义循环调用
    for i in range(1, count + 1):
        emailobj.get_emaildata()
    emailobj.save_emaildata()

3、v3.0 脚本传递

"""
V3.0 生成指定长度、指定数量的邮箱名
(1)给类传递参数
"""
import csv
import random
import string


# 类的定义
class CreatEmail:

    # 在类的初始化方法中进行类的属性定义
    def __init__(self, minlen, maxlen, count):
        self.minlen = minlen
        self.maxlen = maxlen
        self.count = count
        self.erex = ["@qq.com", "@126.com", "@163.com", "@sina.com"]
        self.elist = [] # 设置为空列表,第一个方法给这里返回数据,供给第二个方法用

    # 定义getemail方法
    def get_emaildata(self):
        # 为下面的服务
        num = random.randint(self.minlen, self.maxlen)
        str = ""
        for i in range(1, 31):
            str += string.ascii_letters + string.digits + string.ascii_lowercase
        # 核心代码,生成email
        email = "".join(random.sample(str, num))
        rex = random.choice(self.erex)
        email = email + rex
        self.elist.append(email)

    # 定义了保存数据到文件中的方法
    def save_emaildata(self):
        file = open("emaildata3.csv", "w", newline="")
        write = csv.writer(file)
        for element in self.elist:
            write.writerow([element])
        file.close()


if __name__ == '__main__':
    # 实例化类的对象
    minlen = 10
    maxlen = 10
    count = 100
    emailobj = CreatEmail(minlen, maxlen, count)
    # 获取count属性的值
    count = emailobj.count
    # 定义循环调用
    for i in range(1, count + 1):
        emailobj.get_emaildata()
    emailobj.save_emaildata()

二、碰到的问题

问题1:从列表中,如何获取随机值?

(1)取1个值
变量名 = random.choice(列表名)
(2)取2个值
变量名 = random.sample(列表名,1)
变量名 = random.sample(列表名,2)

问题2:给列表中增加元素不停的追加值?

for i in rang(a,b):
	c = "一定规则计算后得出的"
	list.append(c)

问题3:如何进行类的设计?

1、明确类的个数
2、类命名
3、类属性:输入是什么,输出是什么
4、类的方法:输入是什么决定了给类的属性赋值。一个处理流程定义为一个方法。
在这里插入图片描述

Guess you like

Origin blog.csdn.net/weixin_45451320/article/details/120317220