首页 > 后端开发 > php教程 > 使用Faker生成填充数据进行自动测试

使用Faker生成填充数据进行自动测试

Christopher Nolan
发布: 2025-02-26 11:47:17
原创
629 人浏览过

Using Faker to Generate Filler Data for Automated Testing

许多网站和应用程序的开发都需要各种类型的数据来模拟现实生活中的工作方式。在项目的测试和开发阶段,我们经常使用虚假数据来填充数据库、填充UI元素等等。

自己编写代码为项目生成虚假数据可能会非常繁琐。在本教程中,您将学习如何使用PHP中久经考验的Faker库来生成虚假数据。

入门

在继续之前,我想澄清几点。

最初的虚假库是fzaninotto/Faker。但是,它在2020年12月11日被所有者存档。现在,名为FakerPHP/Faker的库分支正在继续开发工作。如果您正在尝试决定应该在项目中使用哪一个,请选择FakerPHP。

来自FakerPHP的Faker要求您的PHP版本大于或等于7.4。这与原始库支持的PHP >= 5.3.3形成对比。

从现在开始,本教程中对Faker的所有引用都将指代较新的分支版本。

您可以使用composer安装faker,方法是运行以下命令:

<code>composer require fakerphp/faker</code>
登录后复制
登录后复制

这将为您创建一个composer.json文件,并在vendor目录中安装所有必需的包。

安装完成后,您可以通过将这两行添加到代码中来开始在项目中使用该库:

require 'vendor/autoload.php';
$faker = Faker\Factory::create();
登录后复制
登录后复制

第一行将faker库包含在我们的项目中。

在第二行中,我们使用对Generator实例的静态Factory类的调用初始化一个faker生成器,我们可以使用它来生成各种虚假数据。

生成虚假姓名、地址和电话号码

Provider对象用于生成随机数据。对我们捆绑了默认提供程序的Generator实例的调用。

默认提供程序生成基于美国的姓名、地址、电话号码、公司详细信息等。这些调用在后台添加了提供程序:

$faker = new Faker\Generator();
$faker->addProvider(new Faker\Provider\en_US\Person($faker));
$faker->addProvider(new Faker\Provider\en_US\Address($faker));
$faker->addProvider(new Faker\Provider\en_US\PhoneNumber($faker));
$faker->addProvider(new Faker\Provider\en_US\Company($faker));
$faker->addProvider(new Faker\Provider\Lorem($faker));
$faker->addProvider(new Faker\Provider\Internet($faker));
登录后复制

您可以通过简单地调用name属性来在faker中生成虚假姓名。每次调用都会输出不同的随机名称。这是一个例子:

require 'vendor/autoload.php';
$faker = Faker\Factory::create();

$fake_names = [];
for($i = 0; $i < 10; $i++){
    $fake_names[] = $faker->name;
}

/*
Array
(
    [0] => Gabe Mann Jr.
    [1] => Lazaro Leuschke
    [2] => Angie Welch Sr.
    [3] => Prof. Kirk Krajcik III
    [4] => Sadye Mosciski
    [5] => Danyka Braun
    [6] => Jacinthe Dickinson
    [7] => Clifton Beahan
    [8] => Dr. Jan Casper MD
    [9] => Adelia Schimmel
)
*/
print_r($fake_names);
登录后复制

如果您对全名不感兴趣,您也可以只请求名字或姓氏。

require 'vendor/autoload.php';
$faker = Faker\Factory::create();

$first_names = [];
for($i = 0; $i < 10; $i++){
    $first_names[] = $faker->firstName;
}

// Outputs: Dylan, Ariane, Doris, Reilly, Jamar, Merl, Maverick, Frederik, Lucius, Madyson
echo implode(', ', $first_names);
登录后复制

假设您只需要男性或女性姓名。在这种情况下,您可以简单地调用firstNameMale()和address()方法或访问phoneNumber()、phoneNumberWithExtension()。

require 'vendor/autoload.php';
$faker = Faker\Factory::create();

/*
Phone Number: +1-724-494-3101
Phone Number (Extension): (475) 499-3999 x9969
Phone Number (Toll Free): 855.618.0155

Phone Number: 1-660-934-8668
Phone Number (Extension): 351-533-3301 x1602
Phone Number (Toll Free): 844-530-4671
*/
for($i = 0; $i < 2; $i++){
    echo "Phone Number: ".$faker->phoneNumber()."\n";
    echo "Phone Number (Extension): ".$faker->phoneNumberWithExtension()."\n";
    echo "Phone Number (Toll Free): ".$faker->tollFreePhoneNumber()."\n\n";
}
登录后复制

生成特定于区域设置的虚假详细信息

假设您正在开发一个针对特定区域的应用程序。在这种情况下,您可能希望使用反映目标市场的数据。例如,一个面向尼日利亚人的应用程序将受益于拥有尼日利亚姓名。类似地,面向印度用户的应用程序可能希望使用印度地址。

生成特定于区域设置的数据的技巧是将区域设置传递给randomNumber()方法,默认情况下,randomNumber()方法生成具有指定位数的随机数。您可以传递unixTime()方法来获取0到当前时间或指定时间之间的Unix时间戳值。也可以生成随机dateTime()方法。同样,默认最大值为当前日期和时间。

如果您想生成dateTimeAD()方法,它会返回1年1月1日到给定最大值之间的日期。

您可以使用time()方法以特定格式生成随机日期和时间。

假设您需要获取dateTimeBetween()方法。

<code>composer require fakerphp/faker</code>
登录后复制
登录后复制

使用虚假数据生成标记

现在我们知道了如何使用Faker生成不同类型的数值,我们可以组合它们的结果来创建XML或HTML文档,用数值填充数据库等等。例如,考虑下面的代码,它为不同的人生成随机配置文件。

require 'vendor/autoload.php';
$faker = Faker\Factory::create();
登录后复制
登录后复制

生成随机值后,您可以对它们执行任何操作。在本例中,我们在Base类中输出它们以生成我们想要的数据类型。如果您正在寻找一个生成随机数据的库,Faker绝对值得一试。

以上是使用Faker生成填充数据进行自动测试的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板