python 十行代码系列(三):编造友好的测试数据

前言

在开发初期,接口测试的时候数据库经常因为没有合适的数据导致自我测试会有偏差,经常会出现1,2等不太友好的数据,这时候我们就需要一个简单而好用的工具来实现这些功能。

工具

  • python 3.6
  • faker

说明

  • 由于faker支持多种语言,所以如果需要切换语种,可以修改参数local 来修改数据源
  • faker 只支持虚拟数据,如果有定制化需求,比如时间段之间的时间,插入数据库,从数据库中取数据等还需要自定义。

代码

class FakeData(object):
    def __init__(self):
        self.faker = Faker(locale='zh_CN')

    """
    使用说明:构造金额,digits表示几位数子,比如digits=3 表示 100~999 之间数字
    """

    def generator_amt(self, digits=None):
        return self.faker.random_number(digits=digits)

    """
    使用说明:构造地址
    返回示例:
    {'address': '安徽省建军县吉区南昌路N座 878320', 'province': '陕西省', 'city': '乌鲁木齐市', 'street': '何路Z座',
    'street_name': '蔡街', 'company': '襄樊地球村传媒有限公司'}
    """

    def generator_address(self):
        faker = self.faker
        return {
            'address': faker.address(),
            'province': faker.province(),
            'city': faker.city(),
            'street': faker.street_address(),
            'street_name': faker.street_name(),
            'company': faker.company()
        }

    """
    注意事项:参数日期格式是%Y-%m-%d
    返回示例:2019-06-22
    """

    def generator_date(self, start, stop):
        time = radar.random_datetime(
            start=radar.utils.parse(start),
            stop=radar.utils.parse(stop))
        return time

    def generator_time(self, year=2020, *, month):
        time = radar.random_datetime(
            start=datetime.datetime(year=year, month=month, day=1),
            stop=datetime.datetime(year=year, month=month, day=28))
        return time

    """
    指定日期范围:具体到日期之间 比如start_year=2020, end_year=2021, start_month=12, end_month=1, start_date=1,
                                    end_date=15表示2020-12-01~2021-01-15之间日期
    返回示例:2020-12-21 01:10:49
    """

    def generator_date_time(self, start_year=2020, end_year=2020, *, start_month, end_month, start_date, end_date):
        time = radar.random_datetime(
            start=datetime.datetime(year=start_year, month=start_month, day=start_date),
            stop=datetime.datetime(year=end_year, month=end_month, day=end_date))
        return time

本篇文章由一文多发平台ArtiPub自动发布

你可能感兴趣的:(python 十行代码系列(三):编造友好的测试数据)