首頁 >後端開發 >php教程 >使用Faker生成填充數據進行自動測試

使用Faker生成填充數據進行自動測試

Christopher Nolan
Christopher Nolan原創
2025-02-26 11:47:17632瀏覽

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目錄中安裝所有必需的包。

安裝完成後,您可以通過將這兩行添加到代碼中來開始在項目中使用該庫:

<code class="language-php">require 'vendor/autoload.php';
$faker = Faker\Factory::create();</code>

第一行將faker庫包含在我們的項目中。

在第二行中,我們使用對Generator實例的靜態Factory類的調用初始化一個faker生成器,我們可以使用它來生成各種虛假數據。

生成虛假姓名、地址和電話號碼

Provider對像用於生成隨機數據。對我們捆綁了默認提供程序的Generator實例的調用。

默認提供程序生成基於美國的姓名、地址、電話號碼、公司詳細信息等。這些調用在後台添加了提供程序:

<code class="language-php">$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));</code>

您可以通過簡單地調用name屬性來在faker中生成虛假姓名。每次調用都會輸出不同的隨機名稱。這是一個例子:

<code class="language-php">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);</code>

如果您對全名不感興趣,您也可以隻請求名字或姓氏。

<code class="language-php">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);</code>

假設您只需要男性或女性姓名。在這種情況下,您可以簡單地調用firstNameMale()和address()方法或訪問phoneNumber()、phoneNumberWithExtension()。

<code class="language-php">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";
}</code>

生成特定於區域設置的虛假詳細信息

假設您正在開發一個針對特定區域的應用程序。在這種情況下,您可能希望使用反映目標市場的數據。例如,一個面向尼日利亞人的應用程序將受益於擁有尼日利亞姓名。類似地,面向印度用戶的應用程序可能希望使用印度地址。

生成特定於區域設置的數據的技巧是將區域設置傳遞給randomNumber()方法,默認情況下,randomNumber()方法生成具有指定位數的隨機數。您可以傳遞unixTime()方法來獲取0到當前時間或指定時間之間的Unix時間戳值。也可以生成隨機dateTime()方法。同樣,默認最大值為當前日期和時間。

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

您可以使用time()方法以特定格式生成隨機日期和時間。

假設您需要獲取dateTimeBetween()方法。

<code>composer require fakerphp/faker</code>

使用虛假數據生成標記

現在我們知道瞭如何使用Faker生成不同類型的數值,我們可以組合它們的結果來創建XML或HTML文檔,用數值填充數據庫等等。例如,考慮下面的代碼,它為不同的人生成隨機配置文件。

<code class="language-php">require 'vendor/autoload.php';
$faker = Faker\Factory::create();</code>

生成隨機值後,您可以對它們執行任何操作。在本例中,我們在Base類中輸出它們以生成我們想要的數據類型。如果您正在尋找一個生成隨機數據的庫,Faker絕對值得一試。

以上是使用Faker生成填充數據進行自動測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn