icomefromthenet / faker
使用 Doctrine DBAL 和 Symfony2 组件的测试数据生成器
v1.1
2018-08-15 07:42 UTC
Requires
- php: ^7.1
- ext-dom: *
- ext-pcre: *
- ext-spl: *
- doctrine/common: ^2.8
- doctrine/dbal: ^2.8
- icomefromthenet/reverse-regex: ^0.1.0.0
- monolog/monolog: ^1.2
- pimple/pimple: 1.0.*
- symfony/class-loader: ^2.8
- symfony/config: ^2.8
- symfony/console: ^2.8
- symfony/event-dispatcher: ^2.8
- symfony/filesystem: ^2.8
- symfony/finder: ^2.8
- symfony/http-kernel: ^2.8
- symfony/yaml: ^2.8
- twig/twig: ^2.0
- zendframework/zend-progressbar: ^2.5.2
- zendframework/zend-text: ^2.6
Requires (Dev)
- phpunit/dbunit: >=1.2
- phpunit/phpunit: 7
This package is not auto-updated.
Last update: 2024-09-14 12:27:40 UTC
README
#Faker - 数据库测试工具。
有几个对原始 Perl Faker 的移植,还有一些移植到 PHP。最初作为一个简单的项目,现在已经发展成为一个综合的数据生成工具,由 Doctrine DBAL 和 Symfony2 组件提供支持。
我认为 Faker 将如何帮助您
- 编写 PHPUnit DBUnit 固定数据,这将为您节省时间(尤其是涉及多个平台时)。
- 您需要为各种加载测试填充数据库中的测试数据。
如果您是数据库测试人员或独立开发者,Faker 将帮助您更快地测试数据库。
##功能
- 支持多个平台,使用 Doctrine DBAL。(MySql|PGSQL|Oracle|Sqlite|MSSql)。
- 支持 PHPUnit Dataset XML 用于 DBUnit 固定数据。
- 支持上述平台的标准 Sql DDL(插入语句)。
- 输出格式有自己的模板,可以根据项目进行自定义。(添加自己的品牌)。
- 通过 XML 文件配置,感觉更接近数据库。
- 许多内置数据类型,包括文本、数字、自增、电子邮件、城市名称等。
- 支持扩展,编写自己的类型、编写者和地区。
- 通过 composer 安装。
- 分析和构建现有数据库的结构。
- 为随机数生成器配置种子以获得可重复的结果(种子全局|表|列|类型)。
- 支持自定义地区,生成 Unicode 测试数据。(不仅仅是英文)。
- 项目文件夹可以与您的项目一起进行版本控制。
##要求。
SQLite3、PHP5.3.3、MBString、Pear 和 Linux / Mac(Windows 支持处于测试阶段)。
所有组件默认包含在 PHP 的包安装中。
如何安装
最简单的方法是使用 composer 安装
{ "require-dev" : { "icomefromthenet/faker": "dev-master" } }
更多信息请参阅 入门指南
快速示例 - 仍然在疑惑
转换您的 SCHEMA
<?xml version="1.0"?> <schema name="sakila" randomGenerator="simple" generatorSeed="1000"> <writer platform="mysql" format="sql" singleFileMode="true" /> <table name="actor" generate="100" randomGenerator="simple" generatorSeed="1000"> <column name="actor_id" type="integer" randomGenerator="simple" generatorSeed="1000"> <datatype name="autoincrement"> <option name="start" value="1" /> <option name="randomGenerator" value="simple" /> <option name="generatorSeed" value="100" /> </datatype> </column> <column name="first_name" type="string"> <datatype name="people"> <option name="format" value="{fname}" /> </datatype> </column> <column name="last_name" type="string"> <datatype name="people"> <option name="format" value="{lname}" /> </datatype> </column> <column name="last_update" type="datetime"> <datatype name="date"> <option name="start" value="today" /> <option name="modify" value="+1 week" /> <option name="max" value="today +10 weeks" /> </datatype> </column> </table> <table name="actor_homes" generate="10000"> <column name="actor_id" type="integer"> <foreign-key name="actor_homes.actor_id" foreignTable="actor" foreignColumn="actor_id" /> </column> </table> </schema>
调用命令
../vendor/bin/faker.php faker:generate schema.xml
转换成 DATA
-- Migrations Faker Dump -- version 1.0.2 -- https://github.com/icomefromthenet/Faker -- -- Host: localhost -- Generation Time: 2012-07-03T06:08:02+00:00 -- PHP Version: 5.3.10-1ubuntu3.2 -- Platform: mysql SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; -- -- Database: sakila -- -- -------------------------------------------------------- -- -- Table: actor -- USE sakila; INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (1,'Jordan','Proctor','2012-07-03 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (2,'Michele','Welsh','2012-07-10 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (3,'Paul','Lam','2012-07-17 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (4,'Sheila','Best','2012-07-24 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (5,'Karl','Moser','2012-07-31 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (6,'Victoria','Todd','2012-08-07 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (7,'Julia','Sun','2012-08-14 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (8,'Jimmy','Rankin','2012-08-21 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (9,'George','Brantley','2012-08-28 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (10,'Wendy','Walton','2012-09-04 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (11,'Lester','Osborne','2012-09-11 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (12,'Edwin','Upchurch','2012-07-03 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (13,'Courtney','Ennis','2012-07-10 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (14,'Nina','Fischer','2012-07-17 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (15,'Brooke','Benson','2012-07-24 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (16,'Angela','Rodriguez','2012-07-31 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (17,'Todd','Wiggins','2012-08-07 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (18,'Ron','Smith','2012-08-14 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (19,'Andrew','Coates','2012-08-21 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (20,'Kerry','Harrison','2012-08-28 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (21,'Harvey','Mercer','2012-09-04 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (22,'Herbert','Gould','2012-09-11 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (23,'Donna','Forrest','2012-07-03 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (24,'Vivian','Sumner','2012-07-10 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (25,'Carol','Oliver','2012-07-17 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (26,'Patricia','Tate','2012-07-24 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (27,'Dolores','Bowers','2012-07-31 00:00:00'); INSERT INTO `actor` (`actor_id`,`first_name`,`last_name`,`last_update`) VALUES (28,'Gerald','Pearson','2012-08-07 00:00:00');