При разработке языка Python ваш код не может работать.
Это строго эквивалентно следующему:
_RANDOM_ASSET = "ABC" + str(randint(0000, 9999))
_RANDOM_BARCODE = "AA" + str(randint(111111, 999999))
class AssetFactory(factory.django.DjangoModelFactory):
class Meta:
model = models.Asset
asset = _RANDOM_ASSET
barcode = _RANDOM_BARCODE
user = factory.LazyAttribute(lambda x: faker.name())
Вы зафиксировали случайное значение для asset
и barcode
, поэтому каждый объект, сгенерированный в этой фабрике, будет иметь одинаковое значение.
Правильным способом было бы использовать различные встроенные объявления:
class AssetFactory(factory.django.DjangoModelFactory):
class Meta:
model = models.Asset
asset = factory.fuzzy.FuzzyText(length=4, prefix='ABC', chars=string.digits)
barcode = factory.fuzzy.FuzzyText(length=6, prefix='AA', chars=string.digits)
user = factory.Faker('name')