使用Faker类库构造测试数据

自动化构造测试数据设计分析流程如下:

  1、测试数据构造需求分析:得出数据的组成规则

  2、使用Faker类库进行数据构建试验

    faker相关资料链接:https://zhuanlan.zhihu.com/p/87203290

  3、使用循环构造多组数

  4、确定测试数据存储格式

  5、进行测试数据保存

 

Faker类库技术试验

import csv
from faker import Faker
import datetime

# 试验1:教师登录名规则:自己拼音简拼+t+序号
# 创建文件
file = open("testdata.csv", "w", newline="")
# 获取写文件的对象
fwrite = csv.writer(file)
name = 'hyrt'
for i in range(1, 11):
    num = str(i).zfill(5)
    # print(num)
    tloginname = name+num
    print(tloginname)
    # 写入内容
    fwrite.writerow([tloginname])
# 关闭文件
file.close()

# 试验2:姓名:随机汉字
# 英文名字
# faker = Faker()
# 中文名字
faker = Faker(locale='zh_CN')
for i in range(1, 11):
    tname = faker.name()
    print(tname)

# 试验3:开始日期:当前系统时间
start = datetime.date.today()
print(start)

# 试验4:结束日期:开始日期之后的20天以内
faker = Faker()
end = faker.date_between(start_date=start, end_date="+20d")
print(end)

# 试验5:将数据保存到文件中
# 创建文件
file = open("testdata.csv", "w", newline="")
# 获取写文件的对象
fwrite = csv.writer(file)
# 写入内容
fwrite.writerow(["aaa,bbb"])
fwrite.writerow(["aaa", "bbb"])
# 关闭文件
file.close()

# 试验6:汉字转拼音
from xpinyin import Pinyin
p = Pinyin()
g=p.get_pinyin("王强").replace("-", "")
print(g)
email = g+"@51testing.com"
print(email)

# 试验7:邮件:随机生成
faker = Faker()
temail = faker.email()
print(temail)

# 试验8:电话:随机生成
faker = Faker(locale='zh_CN')
# 完整手机号码(加了国家和国内区号)
# fphone = faker.msisdn()
# print(fphone)
# 手机号
phone = faker.phone_number()
print(phone)


# 试验9:身份证:符合身份证要求
faker = Faker(locale='zh_CN')
# tssn = faker.ssn()
tssn = faker.ssn(min_age=18, max_age=90)
print(tssn)

# 试验10:密码:固定6位长数字
faker = Faker(locale='zh_CN')
tpwd = faker.password(length=6, special_chars=False, digits=True, upper_case=False, lower_case=False)
print(tpwd)
***************************************
# 自动构造测试数据并保存文件
# 使用Faker函数进行数据构造
***************************************
需求:
教师登录名规则:自己拼音简拼+t+序号
教师姓名规则:随机汉字
密码:固定6位长数字
电话:随机生成
身份证:符合身份证要求
邮件:随机生成
开始日期:当前系统时间
结束日期:开始日期之后的20天内
import csv
from faker import Faker
import datetime
from xpinyin import Pinyin

# 创建文件
file = open("testdata.csv", "w", newline="")
# 获取写文件的对象
fwrite = csv.writer(file)
# 写入标题
fwrite.writerow(["教师登录名", "教师姓名", "密码", "电话", "身份证号", "邮件", "开始日期", "结束日期"])
name = 'hyrt'
faker = Faker(locale='zh_CN')
p = Pinyin()
for i in range(21, 31):
    # 生成序号
    num = str(i).zfill(5)
    # 教师登录名:自己拼音简拼+t+序号
    tloginname = name+num
    # 教师姓名:随机汉字
    tname = faker.name()
    # 密码:固定6位长数字
    tpwd = faker.password(length=6, special_chars=False, digits=True, upper_case=False, lower_case=False)
    # 电话:随机生成
    tphone = faker.phone_number()
    # 身份证:符合身份证要求
    tssn = faker.ssn(min_age=18, max_age=90)
    # 邮件:随机生成
    # temail = faker.email()
    # 邮件:教师姓名拼音+@+邮箱域名
    # 1、获取免费邮箱域名
    rex = faker.free_email_domain()
    # 2、教师姓名汉字转拼音
    g = p.get_pinyin(tname).replace("-", "")
    # 3、拼接邮箱字符串
    temail = g + "@" + rex
    # 开始日期:当前系统时间
    start = datetime.date.today()
    # 结束日期:开始日期之后的20天以内
    end = faker.date_between(start_date=start, end_date="+20d")
    # 写入内容
    fwrite.writerow([tloginname, tname, tpwd, tphone, tssn, temail, start, end])
# 关闭文件
file.close()

注意:构造的测试数据文件有标题行,读取时可以使用next()函数跳过标题行。

posted @ 2020-09-10 11:46  弦歌雅意  阅读(397)  评论(0编辑  收藏  举报