测试学习-110-测试数据批量生成,并生成CSV文件(完整版本)

前言:

上两篇博客我们讲解了,关于数据构造框架Faker的使用一届各个属性的构造方法。今天我们就来使用Faker来进行生成数据并保存到CSV文件中,使用。

承诺:本篇博客承诺,所展示代码复制立马能用。无套路

1、ID生成问题解决

我们上两篇文章虽然讲述了Faker的使用,但是Faker虽然强大,但是好像也有一个缺陷。没有ID的生成方法。我们知道,无论任何数据但凡是结构化的,都有一个主码ID,它是这一条数据的唯一性标识。但是我好像发现Faker中没有ID的生成方法。因此为了解决这一缺陷,我在使用Faker框架的同时也写出了ID构造的方法。

废话不多说,直接上代码,每一个函数我都做了详细的说明。相信只要是有点编程技术的人都能看懂。

1、ID生成函数

def Generate_ID(num):
    '''
    1、生成ID递增的数据,以baseHead为数据前半部分,自定义的selfAdd递增的为尾部数据
    2、两者合并为一个string类型的数据,存入IDlist中备用
    :param num:要生成的数据个数
    :return: 返回num个数据list形式
    '''

    BaseHead = "65010000001190000001022017121910051599983015"
    IDlist = []

    for i in range(num):
        selfAdd = 1001
        selfAdd = selfAdd + i
        result = BaseHead + str(selfAdd)
        IDlist.append(result)
    # print(IDlist)
    return IDlist

'''最终ID 例子 650100000011900000010220171219100515999830151001'''

以上的代码是对于ID生成函数的编写。BaseHead是基础,selfAdd师动态变化的。然后两者合并。

2、数据生成完整版 (复制即可用)

# coding:utf8
from faker import Faker
import random
import datetime
import pandas as pd

'''
引入faker库来生成随机假数数据
faker 对于中文 地址 姓名 颜色 时间等等之类的数据构造有很好的支持
Faker 对于ID的构造没有很好的支持
'''
# zh_CN 为中文数据
faker = Faker("zh_CN")

def Generate_ID(num):
    '''
    1、生成ID递增的数据,以baseHead为数据前半部分,自定义的selfAdd递增的为尾部数据
    2、两者合并为一个string类型的数据,存入IDlist中备用
    :param num:要生成的数据个数
    :return: 返回num个数据list形式
    '''

    BaseHead = "65010000001190000001022017121910051599983015"
    IDlist = []

    for i in range(num):
        selfAdd = 1001
        selfAdd = selfAdd + i
        result = BaseHead + str(selfAdd)
        IDlist.append(result)
    # print(IDlist)
    return IDlist

#------------------------------以上是生成ID的方法------------------------------------------

def Generate_oteher_data(IDlist, num):
    '''
    1、以IDlist中的数据作为第一列数据
    2、以Faker框架随机生成其他数据
    3、两者最终合并存入一一对应的列表中

    :param IDlist: 上个函数写好的ID数据
    :param num: 要生成的数据个数
    :return: 最终数据,包含各个属性
    '''
    otherDatalist = []
    for i in range(num):
        name = faker.name()
        phone = faker.phone_number()
        address = faker.address()
        country = faker.country()
        cityName = faker.city_name()
        province = faker.province()
        date = faker.date()
        otherDatalist.append([IDlist[i], name, phone, address, country, cityName, province, date])
    # print(otherDatalist)
    return otherDatalist


def gettime():
    '''
    :return: 当前时间的规范形式
    '''
    now_time = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')
    return now_time


def dataMerager_toCSV(otherDatalist):
    '''
    1、定义好列名
    2、列名与 数据内容合并
    3、使用pandas框架生成CSV文件

    :param otherDatalist: 数据内容
    :return: 数据生成CSV文件
    '''
    outputfile = 'data/测试数据' + gettime() + '.csv'
    # 定义列名
    columns = ['ID', 'name', 'phone', 'address', 'country', 'cityName', 'province', 'date']
    Data = []
    Data.append(columns)
    Data.extend(otherDatalist)  # 合并列名与数据
    # print(Data)
    # 生成csv数据文件
    dataframe = pd.DataFrame(Data)
    dataframe.to_csv(outputfile, encoding='utf-8', index=False, header=0)


if __name__ == '__main__':
    # 生成1000条数据
    Data = Generate_oteher_data(Generate_ID(1000), 1000)
    dataMerager_toCSV(Data)

注意:不要忘了在你的Python项目结构中添加一个名字叫data的文件夹。

3、数据样例显示。使用jupyter notebook

import pandas as pd
df = pd.read_csv('./测试数据2020-11-23 17-11-55.csv')
df.head(1000)

数据是不是很“真”呀?有问题可留言,看到必回复。

猜你喜欢

转载自blog.csdn.net/u013521274/article/details/110005978