import factory.fuzzy import faker from core.strings import underscore_15 from factory import DjangoModelFactory, SubFactory faker = faker.Factory.create() class SubProjectFactory(DjangoModelFactory): class Meta: model = SubProject django_get_or_create = ("internal_name",) internal_name = factory.Faker('pystr') internal_short_name = factory.Faker('pystr') underscore_15 = factory.fuzzy.FuzzyText(length=15) main_project = SubFactory(MainProjectFactory)
我需要下划线_15字段是一个小写字符串,具体长度只有15个字符,没有空格。如果有空格,应该是下划线。我试着用一个函数 factory.fuzzy.FuzzyText(length=15) . 然后我意识到我假设FuzzyText返回一个字符串,但它是一个FuzzyText对象。
factory.fuzzy.FuzzyText(length=15)
我该怎么办?
好吧,你可以拿到 FuzzyText 通过如下方式调用对象值:
FuzzyText
>> f = factory.fuzzy.FuzzyText(length=15) >> f.fuzz()
但是,在本文中,字符可以是大写或小写。因此,如果希望使用排他性小写字符,则可以覆盖 模糊文本 这样地:
模糊文本
from factory.fuzzy import FuzzyText class CustomFuzzyText(FuzzyText): def fuzz(self, *args, **kwargs): return super(CustomFuzzyText, self).fuzz(*args, **kwargs).lower()
underscore_15 = CustomFuzzyText(prefix="aa_", length=12) # or CustomFuzzyText(length=15)