У меня есть несколько моделей для UnitTest с помощью обманщика (http://www.joke2k.net/faker/), и это случайное в оболочке:обманщик (питон) рандомизирует в оболочке, но не в DjangoModelFactory объекта
In [50]: get_random()
Out[50]: 22347376
In [51]: get_random()
Out[51]: 66840240
In [52]: import factory, random, time
In [53]: from factory import DjangoModelFactory, lazy_attribute
In [54]: from faker import Faker
In [55]: FAKER = Faker(locale='en_US')
In [60]: FAKER.email()
Out[60]: u'[email protected]'
In [61]: FAKER.seed(get_random())
In [62]: FAKER.email()
Out[62]: u'[email protected]'
In [63]: FAKER.seed(get_random())
In [64]: FAKER.email()
Out[64]: u'[email protected]'
In [65]: FAKER.email()
Out[65]: u'[email protected]'
In [66]: FAKER.email()
Out[66]: u'[email protected]'
Посев является необязательным. Но когда я делаю новый объект, я всегда получаю, что он сделал то же самое по электронной почте:
In [2]: u = User()
In [3]: u
Out[3]: <User: Ut fugiat quasi aperiam provident error iure. Enim dolor totam quia sint. Porro laudantium aut non ducimus veritatis.>
In [5]: u.email
Out[5]: '[email protected]'
In [6]: u = User()
IntegrityError: duplicate key value violates unique constraint "users_user_email_key"
DETAIL: Key (email)=([email protected]) already exists.
модель выглядела как:
../users.py:
import factory, time
from factory import DjangoModelFactory, lazy_attribute
from faker import Faker
FAKER = Faker(locale='en_US')
class User(DjangoModelFactory):
class Meta:
model = 'users.User'
first_name = FAKER.first_name()
last_name = FAKER.last_name()
email = FAKER.email()
И теперь У меня есть:
import factory, random, time
from factory import DjangoModelFactory, lazy_attribute
from faker import Faker
FAKER = Faker(locale='en_US')
def get_random():
return int((random.SystemRandom(random.seed()).random())*100000000)
class User(DjangoModelFactory):
class Meta:
model = 'users.User'
FAKER.seed(get_random())
first_name = FAKER.first_name()
last_name = FAKER.last_name()
email = FAKER.email()
который не имеет значения. Как может что-то рандомизироваться в оболочке, но не на создание объекта, даже если кормить семя? Спасибо