• 4
  • 2
分享

      沐沐在测试工作中经常会遇到批量造数据的情况,例如用于演示的较为真实的数据,例如性能测试查询场景需要基于大数据量进行测试等。当数据量较小的时候我们可以使用Excel造数据或者数据库批量数据等方式,但是如果遇到大数据量,例如几万、几十万的数据时,使用以上两种方式就会令人吐血。因此,沐沐今天给大家介绍一个Python的faker库,只需要调用Faker提供的方法,就可以生成各种类型较为真实的数据,例如个人信息、公司信息、数据类信息等;也可以创建自动定义的Provider,随机生成想要的数据。

  • pip安装:pip install faker

      例如我需要造1w条企业数据,代码运行1s后即可生成数据,生成数据如下截图:

企业数据.png

以下为生成企业数据的代码,代码不太优美(能用就行),大家在工作中有用到可以做参考。

from faker import Faker
import xlwt
from faker.providers import BaseProvider
import random
import shortuuid


# 创建自定义Provider
class CustomizeProvider(BaseProvider):
    def risk_type(self):
        risk_type_list= ['P0', 'P1', 'P2', 'P3']
        risk_type=random.choice(risk_type_list)
        return risk_type

    def risk_description(self):
        risk_des_list= ['暂无风险', '高风险', '中高风险', '中风险','低风险']
        risk_des=random.choice(risk_des_list)
        return risk_des

# 添加Provider
faker = Faker('zh_CN')
faker.add_provider(CustomizeProvider)

def add_company_info(number):
    work_book = xlwt.Workbook(encoding='utf-8')
    work_sheet = work_book.add_sheet('公司测试数据')

    # 添加字段
    head = ['唯一识别码', '公司名称', '统一社会信用代码', '公司性质', '法定代表人', '联系方式', '所在省份', '邮政编码', '公司地址', '街道地址',
            '经度', '维度', '公司邮箱', '风险类别', '风险描述']
    for h in range(len(head)):
        work_sheet.write(0, h, head[h])

    # 添加构造的随机数据
    for i in range(number):
        uuid = shortuuid.ShortUUID().random(length=20)    # 随机uuid,可以作为导入数据库的主键信息
        company = faker.company()   #公司名称
        uniscid = faker.ssn()   #统一社会信用代码
        company_suffix = faker.company_suffix()   #公司性质
        legen_persoon = faker.name()   #法定代表人
        phone = faker.phone_number()   #联系方式
        province = faker.province()   #所在省份
        postcode = faker.postcode()   #邮政编码
        address = faker.address()   #公司地址
        street_address = faker.street_address()   #街道地址
        longitude = faker.longitude()   #经度
        latitude = faker.latitude()   #维度
        company_email = faker.company_email()   #公司邮箱
        risk_type = faker.risk_type()   #风险类别
        risk_description = faker.risk_description()   #风险描述

        #写入Excel
        work_sheet.write(i + 1, 0, uuid)
        work_sheet.write(i + 1, 1, company)
        work_sheet.write(i + 1, 2, uniscid)
        work_sheet.write(i + 1, 3, company_suffix)
        work_sheet.write(i + 1, 4, legen_persoon)
        work_sheet.write(i + 1, 5, phone)
        work_sheet.write(i + 1, 6, province)
        work_sheet.write(i + 1, 7, postcode)
        work_sheet.write(i + 1, 8, address)
        work_sheet.write(i + 1, 9, street_address)
        work_sheet.write(i + 1, 10, longitude)
        work_sheet.write(i + 1, 11, latitude)
        work_sheet.write(i + 1, 12, company_email)
        work_sheet.write(i + 1, 13, risk_type)
        work_sheet.write(i + 1, 14, risk_description)

    work_book.save('D:\\公司测试数据.xls')
    print("公司测试数据保存完成")

if __name__ == '__main__':
    add_company_info(10000)    #如果造1w条数据,将括号中的数字改成10000即可

The more we share,The more we have.

希望这篇文章对大家有用...


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据 Cyber SecurityConnect,一个名为“Randomed.vc”的黑客组织声称已经“入侵了索尼的所有系统”,并因为“索尼拒绝谈判”而将在本周内打包抛售所有数据。  现在,索尼向 IGN 回应表示,他们已经对此事开启了正式调查。“我们目前正在调查此事,目前没有进一步评论。”  截至IT之家发稿,索尼面向消费者的服务目前依然都在正常运行,包括 PSN 和索尼客服等,而且近期也没有出现大规模中断。  Cyber Security Connect 表示,这伙上个月才出现的新手组织“已经攻击了大量的受害者”。他们声称“我们已经成功地攻破了索尼的所有系统,我们不会勒索他们,我们会出售...
            0 0 1120
            分享
          •   接前一篇:  《蚂蚁金服测试大佬的职场总结:抛开技术,还有它》  在这个篇章中,我们共同深度探讨面试这一关乎职业生涯发展的重大课题。作为一个在软件行业沉浸十余载的资深人士,我不仅亲历了技术研发的艰辛与喜悦,更在招聘面试环节扮演了举足轻重的角色。据粗略统计,经我面试过的候选人数量已然突破四位数,而我自身作为被面试者所经历的面试也同样不在少数,可以说积累了相当丰富的实战经验。  面试的本质,如果我们把它比喻为市场营销,其实就是将自己当作一款极具竞争力的产品,竭尽全力地向面试官呈现最优质的自己,以期在众多竞争者中脱颖而出,赢得他们的青睐与信任。  许多求职者往往聚焦于自身专业技术与技能,误以为面...
            0 0 591
            分享
          •   我们在求职的时候,发现有的是招聘的功能测试,有的招聘的是性能测试,那么功能测试和性能测试的区别是什么呢?  侧重点不同  功能测试的侧重点是功能是否满足客户需求。  比如说我们拿到一个节假日搞活动的需求,这个需求有好多种场景,比如说是百分比打折还是满减打折,是否有优惠券,活动是否可叠加使用,如果可叠加使用,优先使用哪种优惠策略等等。  做功能测试时,我们必须把这些需求都搞清楚,并且尽可能的将所有可能出现的场景都测试到,功能测试注重产品的每一个细节。  功能测试要保证的是每一个功能点都无问题,以防在生产环境上客户使用的过程中出现问题。而且功能测试完成后,需要提交测试用例、测试总结报告和用户操...
            0 0 1002
            分享
          • 用工具代替/辅助人工完成软件测试活动的过程,不能为了自动化而自动化自动化测试特点可以对程序的新版本自动执行回归测试可以执行一些手工测试困难或不可能进行的测试可以更好地利用资源测试具有一致性和可重复性自动化一定要有框架自动化测试优势节省时间,提高测试覆盖率和测试精度减少手工测试人为产生的错误提供规范化的过程和一致性自动化测试局限性手工测试比自动测试发现的故障要多,自动化只能发现约15%的bug自动化测试不能提高测试的有效性,只能用于提高测试的效率自动化测试不具有想象力,没人聪明自动化测试不能取代手工测试误区:期望自动化测试发现大量新故障安全性错觉自动化测试的维护开销不适合于自动化测试情景测试频度...
            0 0 1224
            分享
          • 测试报告是测试人员在测试过程中用于反映测试状况的文档,其重要性通过网上哀求、跪求、旋转360度冰天雪地各种求测试报告模块的帖子中就可见一斑。其实测试报告的内容基本都是模板的那些,只是在实际测试过程中,如何去整理内容结构,使得报告的通常阅读者:开发人员、测试经理、产品经理、项目负责人能够一目了然地查看想要了解的内容才是测试报告最值得注意的地方。产品要想有广阔的市场,得需要切实了解用户的需求及感受,同理测试报告要想能够让阅读者能够满意,也需要能将质量情况条理性地列出。通常来说,开发人员往往希望能从报告中了解缺陷的情况,而测试经理还关心用例的执行情况及覆盖率、项目责任人则最关心还有多少问题,此次版本...
            14 14 1658
            分享
      • 51testing软件测试圈微信