一、使用背景
作为一名研发人员,想要批量制造一些测试数据,无论是自己测试,还是方便测试同学,都是有益的。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;
}
}
五、执行命令

六、查看测试数据

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