使用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()函数跳过标题行。