繁体   English   中英

如何从python faker生成json中的随机数据?

[英]how to generate random data in json from python faker?

我想生成 5 个测试用例,它们以 json 格式提供随机数据,如下所示。

{
    "password2": "password@123",
    "email": "test@test.com",
    "username": "user123",
    "first_name": "first",
    "last_name": "last",
    "phone":"1234567890",
    "city":"Paris",
    "about":"This is information about developer"
}

下面的代码给出了 5 个测试用例,但细节相似。 我想用所有不同的细节生成 5 个不同的测试用例。 先感谢您。

代码:

from faker import Faker
import random


class LoginData:
    fake = Faker()
    password = "password@123"
    email = fake.email()
    username = fake.first_name()
    first_name = fake.first_name()
    last_name = fake.last_name()
    phone = random.randint(9000000000, 9999999999)
    city = fake.city()
    about = "This is a sample text : about"

    def get_json(self):
        p = {
            'password': self.password,
            'email': self.email,
            'username': self.first_name,
            'first_name': self.first_name,
            'last_name': self.last_name,
            'phone': self.phone,
            'city': self.city,
            'about': self.about
        }
        return p


logindata = LoginData()


def input_data(x):
    for i in range(0, x):
        print(logindata.get_json())


def main():
    no_of_input = 5
    input_data(no_of_input)


main()

如果我理解正确,问题是您希望每次生成不同的数据。 为此,您需要:

  • 当前, LoginData属性是在定义类时生成的。 如果您希望它们对于每个实例都不同,请将它们设为实例属性并在__init__()方法中设置它们。

  • 您需要在input_data()的 for 循环的每次迭代中创建一个新的LoginData实例。

代码:

from faker import Faker
import random


class LoginData:

    def __init__(self):
        fake = Faker()
        self.password = "password@123"
        self.email = fake.email()
        self.username = fake.first_name()
        self.first_name = fake.first_name()
        self.last_name = fake.last_name()
        self.phone = random.randint(9000000000, 9999999999)
        self.city = fake.city()
        self.about = "This is a sample text : about"

    def get_json(self):
        p = {
            'password': self.password,
            'email': self.email,
            'username': self.first_name,
            'first_name': self.first_name,
            'last_name': self.last_name,
            'phone': self.phone,
            'city': self.city,
            'about': self.about
        }
        return p



def input_data(x):
    for i in range(0, x):
        logindata = LoginData()
        print(logindata.get_json())


def main():
    no_of_input = 5
    input_data(no_of_input)


main()

请注意, get_json()仍然返回 Python dict,而不是 JSON。 对于 JSON,您可以使用标准库中的json模块:

import json

并在get_json()

return json.dumps(p)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM