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)
我需要将underscore_15字段设置为小写字符串,具体长度为15个字符且没有空格。如果有任何空格,则应使用下划线。我试图在factory.fuzzy.FuzzyText(length=15)
周围放置一个函数。然后我意识到我以为FuzzyText返回一个字符串,但这是一个FuzzyText对象。
我该怎么办?
答案 0 :(得分:1)
好吧,您可以像这样调用来获取FuzzyText
对象的值:
>> f = factory.fuzzy.FuzzyText(length=15)
>> f.fuzz()
但是,在本文中,字符可以是大写或小写。因此,如果要使用排他的小写字母字符,则可以像这样覆盖FuzzyText
:
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)