测试造随机数据,玩下Faker模块

前言

  在软件需求、开发、测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据。

 在手动制造数据的过程中,可能需要花费大量精力和工作量,现在好了,有一个Python包能够协助你完成这方面的工作。

  • 什么是Faker
    Faker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成。

安装及模块导入

  • 安装
pip install faker
  • 模块导入
from faker import Faker

基本操作

from faker import Faker
#创建对象,默认生成的数据为为英文,使用zh_CN指定为中文
fake = Faker('zh_CN')

print(fake.name())#随机生成姓名
print(fake.address())#随机生成地址
print(fake.phone_number())#随机生成电话号码
print(fake.pystr())#随机生成字符串
print(fake.email())#随机生成邮箱地址
for i in range(10):
print(fake.name())#随机生成10个姓名
  • Faker伪装者更多详细介绍,请点击查看链接

目录结构

测试数据不用愁,Faker伪装者解忧愁,从基础到实战一步到位_pathlib

  • base目录:用于处理目录
  • data目录:用于存放数据(如:excel,yaml,ini等等)
  • report目录:用于存放测试报告数据
  • testcase目录:用于存放测试用例数据
  • main整个框架的运行主入口

base_path.py

  • 用于封装目录,方便处理不同的文件目录
#! /usr/bin/python3
# @Author : 无涯


from pathlib import Path
import os

class Read_Path():
"""获取文件目录"""

# 绝对路径
BasePath = Path(__file__).resolve().parents[1]
# E:\Back\cm_Faker
# print(Basepath)

def excel_path(self):
"""获取excel表的路径"""

excel_path = Read_Path.BasePath/"data"/"phone.xlsx"
return excel_path

def case_path(self):
"""获取用例目录"""

testcase_path = Read_Path.BasePath/"testcase"
return testcase_path

def report_path(self):
"""获取测试报告目录"""

report_path = Read_Path.BasePath/"report"
return report_path

生成手机数据

  1. 第1步:生成指定数量随机手机号
  2. 将手机号写入excel
#! /usr/bin/python3
# @Author : 无涯

from openpyxl import Workbook
from faker import Faker
from base.base_path import Read_Path
import unittest


class Great_Data(unittest.TestCase):
"""随机生成手机号码"""

def setUp(self) -> None:

# 创建对象
self.book = Workbook()
self.sheet = self.book.active

def test_great(self):

# 设置标题
title_data = ["姓名", "电话"]
self.sheet.append(title_data)
# 模拟生成数据
faker = Faker(locale="zh_CN")
for i in range(10):
self.sheet.append([faker.name(), faker.phone_number()])
# 保存操作
self.book.save(Read_Path().excel_path())

验证手机数据

  • 读取excel数据
  • 循环读取手机号进行检查
#! /usr/bin/python3
# @Author : 无涯


from openpyxl import load_workbook
from base.base_path import Read_Path
from phone import Phone
import logging
import unittest

class Read_Data(unittest.TestCase):

def setUp(self) -> None:

self.excel = load_workbook(Read_Path().excel_path())
self.table = self.excel['Sheet'] #通过表名获取
self.rows = self.table.max_row
self.cols = self.table.max_column
# 获取行数和列数 51,2

def test_phone(self):
"""检查手机号是否真实有效"""

for i in range(1, self.rows):

phone_num = self.table.cell(row=i+1, column=self.cols).value
# print(phone_num)
info = Phone().find(phone_num)
print(info)
if info == None:
pass
else:
logging.warning("手机号:{}, 归属地是:{}".format(info["phone"], info["phone_type"]))
return list

main主文件运行入口

#! /usr/bin/python3
# @Author : 无涯


import unittest
import HTMLTestRunner
import time
from base.base_path import Read_Path


# 测试用例路径
case_path = Read_Path().case_path()
print(case_path)
# 定义测试报告存放路径
report_path = Read_Path().report_path()


def case():
discover = unittest.defaultTestLoader.discover(case_path,
pattern="test_*.py")
return discover

if __name__ == '__main__':
# html报告文件路径
now = time.strftime("%Y-%m-%d %H-%M-%S")
print(now)
report_abspath = Read_Path().report_path()/(now + " result.html")
print(report_abspath)
with open(report_abspath, "wb")as file:
runner = HTMLTestRunner.HTMLTestRunner(stream=file,
title='测试报告',
description='测试用例详情')
# 调用case函数返回值
runner.run(case())

如果想学习软件测试,就快加入:893694563,群内学软件测试,分享技术和学习资料,陪你一起成长和学习。