生成一致的人员数据

时间:2015-01-28 07:09:02

标签: python

我想使用Faker为测试生成一些数据。

但是我无法为单个用户生成合理的数据:

>>> from faker import Factory

>>> fake = Factory.create()

>>> fake.name()
>>> u'Tayshaun Corkery'

>>> fake.email()
>>> u'kaitlynn40@yahoo.com'

如您所见,电子邮件未反映以前生成的名称。文档说:

  

对方法fake.name()的每次调用都会产生不同的(随机)结果。   这是因为faker会转发faker.Generator.method_name()次来电   到faker.Generator.format(method_name)

有没有办法在不编写额外代码的情况下生成一致的人员数据?

3 个答案:

答案 0 :(得分:1)

您可以使用Factory_Boy。它带有内置的Faker,允许您使用先前的数据从已经生成的属性(例如名称,姓氏)中创建“惰性”属性(例如电子邮件)。

答案 1 :(得分:0)

我不敢。让我说如果有一个,显然应该是simple_profile()或seed(),但实际上并没有这样做。

我认为唯一不一致的数据是电子邮件。它自己甚至不需要花时间假装。

答案 2 :(得分:0)

我制作了一个脚本,该脚本将使用伪造者的名字和姓氏,并添加一个介于1到1000之间的随机数字,将它们放在一起以生成带有数字的伪造电子邮件,以使其看起来更合法(示例IanCartwright268 @ gmail.co.uk),这是代码

from faker import Faker # Import Faker And Random For The Random Number #
from random import *
fake = Faker('en_GB') # Sets Faker's Location To Great Britain#
fn = ((fake.first_name())) # Makes The First Name Into A Veriable #
ln = ((fake.last_name())) # Makes The Last Name Into A Veriable #
rn = str (randint(1,1000)) # Makes A Random Number From 1 To 1000 And It Used To Add A Random Number To The End Of The Email To Make It Look Legit #
email = (fn + ln + rn + "@gmail.co.uk") # Adds The First Name, Last Name And The Random Number And The Extension '@gmail.co.uk' #
print("First Name: " + fn + "\n" + "last Name: " + ln + "\n" + "Email: " + email) # Prints The Whole Output#

如果您需要更多帮助,请在Twitter @ R00T_H4X0R上给我发消息

,希望对您有所帮助。