一、使用背景
作为一名研发人员,想要批量制造一些测试数据,无论是自己测试,还是方便测试同学,都是有益的。fakerphp/faker插件可满足你的一些需求,它可以生成接近真实数据的一些虚拟数据,带来的体验感更好。
二、插件安装
参考Packagist插件市场:
在终端执行命令,并且可以指定对应的版本,选择不同的版本需要注意不同版本对php版本的要求:
插件安装完毕,查看扩展包目录:
三、框架内使用
webman框架可以自定义终端命令,执行如下:
app/Command下生成目录文件:
四、代码展示
引入安装的扩展库Faker\Factory,创建生成器实例,即可使用插件的属性如name,address,email,phoneNumber等等,在for循环里制定生成的数据个数<?phpnamespaceapp\command;useapp\model\OrderCopy;useFaker\Factory;useSymfony\Component\Console\Command\Command;useSymfony\Component\Console\Input\InputInterface;useSymfony\Component\Console\Input\InputArgument;useSymfony\Component\Console\Output\OutputInterface;classFakeDataCreateextendsCommand{protectedstaticstring$defaultName='fakeData:create';protectedstaticstring$defaultDescription='fakeData create';/** * @return void */protectedfunctionconfigure():void{$this->addArgument('name',InputArgument::OPTIONAL,'Name description');}/** * @param InputInterface $input * @param OutputInterface $output * @return int */protectedfunctionexecute(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');returnself::SUCCESS;}}五、执行命令
六、查看测试数据
七、总结
相比自己创建的测试数据,还是真实一些,对于后续测试,表查询效率,索引是否生效都有积极的意义。