webman框架虚拟数据填充fakerphp/faker插件的使用

一、使用背景

作为一名研发人员,想要批量制造一些测试数据,无论是自己测试,还是方便测试同学,都是有益的。fakerphp/faker插件可满足你的一些需求,它可以生成接近真实数据的一些虚拟数据,带来的体验感更好。

二、插件安装

参考Packagist插件市场:

在终端执行命令,并且可以指定对应的版本,选择不同的版本需要注意不同版本对php版本的要求:

插件安装完毕,查看扩展包目录:

三、框架内使用

webman框架可以自定义终端命令,执行如下:

app/Command下生成目录文件:

四、代码展示

复制代码
引入安装的扩展库Faker\Factory,创建生成器实例,即可使用插件的属性如name,address,email,phoneNumber等等,在for循环里制定生成的数据个数
php 复制代码
<?php

namespace app\command;

use app\model\OrderCopy;
use Faker\Factory;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;


class FakeDataCreate extends Command
{
    protected static string $defaultName = 'fakeData:create';
    protected static string $defaultDescription = 'fakeData create';

    /**
     * @return void
     */
    protected function configure(): void
    {
        $this->addArgument('name', InputArgument::OPTIONAL, 'Name description');
    }

    /**
     * @param InputInterface $input
     * @param OutputInterface $output
     * @return int
     */
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $output->writeln('start fakeData:create');
        $faker = Factory::create('zh_CN'); // 创建生成器实例
        $users = [];
        for ($i = 0; $i < 100; $i++) {
            $users[] = [
                'school_id' => 1,
                'canteen_id' => 2,
                'stall_id' => 9,
                'user_name' => $faker->name,
                'email' => $faker->unique()->email,
                'address' => $faker->address(),
                'mobile' => $faker->phoneNumber,
                'sn' => 'MO' . date('YmdHis',time()) . $faker->numerify('########'),
                'amount' => $faker->randomFloat($nbMaxDecimals = 2, $min = 0, $max = 100),
                'amount_real' => $faker->randomFloat(nbMaxDecimals: 2, min: 0, max: 100),
            ];
        }
        // 批量插入数据
        OrderCopy::insert($users);
        $output->writeln('end fakeData:create');
        return self::SUCCESS;
    }

}

五、执行命令

六、查看测试数据

七、总结

相比自己创建的测试数据,还是真实一些,对于后续测试,表查询效率优化,索引是否生效检查等都有积极的意义。

相关推荐
简鹿视频3 小时前
视频转mp4格式具体作步骤
ffmpeg·php·音视频·实时音视频
liebe1*13 小时前
第十一章 密码学
服务器·密码学·php
一分半心动5 小时前
lnmp架构 mysql数据库Cannot assign requested address报错解决
linux·mysql·php
catchadmin8 小时前
PHP 开发者指南 如何在 Composer 中使用本地包
开发语言·php·composer
刘孬孬沉迷学习9 小时前
GTP协议
开发语言·学习·5g·php·信息与通信
C+++Python9 小时前
PHP 反射 API
android·java·php
bleach-10 小时前
buuctf系列解题思路祥讲--[网鼎杯 2020 青龙组]AreUSerialz1——文件包含漏洞,PHP代码审计,php伪协议,php反序列化
开发语言·安全·web安全·网络安全·渗透测试·php
zhaotiannuo_199810 小时前
渗透测试之后端编程PHP
开发语言·chrome·php
翼龙云_cloud10 小时前
腾讯云云渠道商:如何利用镜像实现跨云平台迁移?
运维·服务器·云计算·php·腾讯云