写点什么

Python Faker 库造伪数据,使用 CSV 文件数据管理,faker 数据唯一性

  • 2023-08-02
    北京
  • 本文字数:1452 字

    阅读完需:约 5 分钟

Python Faker 库造伪数据,使用 CSV 文件进行数据驱动管理

一、Faker 概述

Python 在数据使用方面有举足轻重的地位,也越来越多的使用在自动化测试等方向。

在测试过程中,必不可少会经历造数据,数据驱动(DDT)测试的环节。

Python 的第三方库 Faker 可以很好的帮我们处理相关问题场景。


官方文档:https://faker.readthedocs.io/en/master/index.html

二、安装及基本使用

  • 安装


# 因为是第三方库,可以直接使用pip进行安装>>>pip install Faker -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码


  • 基本 API 的使用-----No bb, show me the code.


>>> from faker import Faker>>> f=Faker("zh-CN")>>> f.name()'尹强'>>> f.phone_number()'15094652820'>>> f.email()'minguo@dai.cn'>>> f.ssn()'430525196611276981'>>>
复制代码


基本的调用方法就是这样,生成一个 Faker 实例对象,通过.方法()的调用输出想要的数据。


Faker 的 api 接口很多很多,相关的接口写在最下方。

三、批量生成数据,使用 CSV 文件管理

在测试工作中,经常会将测试用数据统一管理起来,比如在 Jmeter 中常使用的就是 CSV 文件。


eg.


from faker import Faker

class FakerDemo: def __init__(self): # 实例化时,如果要生成中国的数据信息,参数内要加上"zh-CN" self.fake = Faker("zh-CN")
def person(self, count): msg = "" for i in range(count): num = i + 1 name = self.fake.name() phone = self.fake.phone_number() email = self.fake.email() msg += f"{num},{name},{phone},{email}\n" return msg

if __name__ == '__main__': #实例化FakeDemor对象 f = FakerDemo() #生成10个人的信息(序号,姓名,电话,邮编) data = f.person(10) #print(data)
with open("data.csv", "w") as d: d.write(data)
复制代码


以上代码运行后,则会在当前目录生成一个data.csv文件。如下图所示



具体要生成哪些数据,则自己把握

四、数据唯一性问题

那我们需要确定一个问题,Faker 生成的数据是具有唯一性的吗?我们可以通过一小段代码来验证一下。


No bb, show me the code.


from faker import Faker

def faker_demo(n): f = Faker("zh-CN") l = [] for i in range(n): name = f.name() l.append(name) return f"列表总数{len(l)},去重后总数{len(set(l))}"

if __name__ == '__main__': print(faker_demo(100))
复制代码


经过调用显示结果如下:


100 条数据:



1000 条数据:



10000 条数据:



由此可知,faker 普通接口生成的数据,并不是具有唯一性的。


所以大家在使用中,如果是需要唯一性数据,需要更改一处代码:name = f.unique.name()


# 在生成数据时,先调用unique,上面例子中的代码则改成下面这样from faker import Faker

def faker_demo(n): f = Faker("zh-CN") l = [] for i in range(n): # 代码更改处,调用数据时,先调用unique name = f.unique.name() l.append(name) return f"列表总数{len(l)},去重后总数{len(set(l))}"

if __name__ == '__main__': print(faker_demo(10000))
复制代码


生成 10000 条数据,验证一下:



这样,就不用自己再去写逻辑筛除,可以非常方便的生成唯一性数据了。

五、相关 API

数据的生成均为实例化 Faker 对象后通过.方法()进行调用,下表为平时最常用相关 API,不常用的 API 太多,网上到处都是,我也懒得贴了,大家可以自行百度查找。



获取更多技术资料,请点击!

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
Python Faker库造伪数据,使用CSV文件数据管理,faker数据唯一性_霍格沃兹测试开发学社_InfoQ写作社区