Get in touch
or send us a question?
CONTACT

Tạo dữ liệu giả với DataFaker

 Data Faker là gì?

DataFaker là một thư viện dành cho Java và Kotlin để tạo dữ liệu giả, tự động generate data. Điều này rất hữu ích khi tạo dữ liệu thử nghiệm để điền vào cơ sở dữ liệu, để tạo dữ liệu cho thử nghiệm mang tính demo hoặc ẩn danh dữ liệu từ các thông tin dịch vụ nhạy cảm không cần thiết.

Thư viện DataFaker kế thừa và phát triển từ thư viện JavaFaker.

Thư viện này tạo dữ liệu giả tương tự như các trình tạo dữ liệu giả khác, chẳng hạn như:


✅ Cài đặt thư viện Data Faker

Phiên bản mới nhất của Data Faker là 1.9.0 và được lưu trữ trên Maven Central.

<!-- https://mvnrepository.com/artifact/net.datafaker/datafaker -->
<dependency>
    <groupId>net.datafaker</groupId>
    <artifactId>datafaker</artifactId>
    <version>1.9.0</version>
</dependency>

MarkupCopy

Websitehttps://www.datafaker.net/
GitHubhttps://github.com/datafaker-net/datafaker


✅ Sử dụng Data Faker

Để sử dụng Data Faker để tạo dữ liệu giả, bạn có thể sử dụng đoạn code sau làm ví dụ:

import net.datafaker.Faker;

Faker faker = new Faker();

//Thông tin người
String name = faker.name().fullName();
String firstName = faker.name().firstName();
String lastName = faker.name().lastName();

//Thông tin đường
String streetAddress = faker.address().streetAddress();

JavaCopy

Như vậy là các bạn chỉ cần tạo đối tượng class Faker. Sau đó lấy chấm gọi dùng các hàm nó viết sẵn để lấy dữ liệu giả thôi.

✅ Sử dụng vùng ngôn ngữ trong Data Faker

Bạn có thể sử dụng data của các nước khác nhau thông qua Locate trong Java. Mặc định là English tương ứng ký hiệu locate là “en“.

Ví dụ mình muốn dùng tiếng Việt thì dùng ký hiệu “vi“.

package com.anhtester.testcases;

import net.datafaker.Faker;
import org.testng.annotations.Test;

import java.util.Locale;

@Test
public void testDataFaker01() {
    Faker faker = new Faker(new Locale("vi"));

    String computer = faker.computer().windows();
    String name = faker.name().fullName();
    String fullAddress = faker.address().fullAddress();
    String email = faker.internet().emailAddress();
    String password = faker.internet().password();

    System.out.println(computer);
    System.out.println(name);
    System.out.println(fullAddress);
    System.out.println(email);
    System.out.println(password);
}

JavaCopy

Kết quả:

Windows 11
Nguyễn Vân
Apt. 387 9700 Thảo Valley, Phú Thọ, MS WDHV  0ZR
nguyen.tham@hotmail.com
1e8cj6oj53cf

===============================================
Default Suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================

Log fileCopy

Lưu ý: class Locate là của Java

Các loại data khác bạn có thể xem thêm tại đây Fake Data Providers
Các mã code Locate khác xem tại đây: https://www.science.co.il/language/Locale-codes.php


🔆 Nâng cao hơn là bạn viết class utils hoặc helpers riêng để sau này gọi dùng cho tiện.

DataFakerHelpers.java

package com.anhtester.helpers;

import com.anhtester.constants.ConstantGlobal;
import net.datafaker.Faker;

import java.util.Locale;

public class DataFakerHelpers {

    private static Faker faker;

    public static Faker createFaker() {
        faker = new Faker(new Locale(ConstantGlobal.LOCATE));
        return faker;
    }

    public static Faker createFakerByLocate(String locateName) {
        faker = new Faker(new Locale(locateName));
        return faker;
    }

    public static Faker getFaker() {
        if (faker == null) {
            faker = createFaker();
        }
        return faker;
    }

    public static Faker getFakerByLocate(String locateName) {
        faker = createFakerByLocate(locateName);
        return faker;
    }

    public static void setFaker(Faker faker) {
        DataFakerHelpers.faker = faker;
    }
}

JavaCopy

NoteConstantGlobal là class lưu các biến static được khai báo giá trị cứng hoặc lấy từ file config properties

public final static String LOCATE = PropertiesHelpers.getValue("LOCATE");

JavaCopy

Gọi lại sử dụng:

@Test
public void testDataFaker02() {
    String cityName1 = DataFakerHelpers.getFaker().address().cityName();
    String cityName2 = DataFakerHelpers.getFakerByLocate("vi").address().cityName();

    System.out.println(cityName1);
    System.out.println(cityName2);
}
link 
https://anhtester.com/blog/selenium-java/tao-du-lieu-gia-voi-datafaker