如何设置特定长度的特定伪造者随机字符串并使用下划线作为空格?
How to set specific faker random string of specific length and using underscores for spaces?
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 个字符长且没有 space 的小写字符串。如果有任何 space 它应该是下划线。我试图在 factory.fuzzy.FuzzyText(length=15)
周围放置一个函数。然后我意识到我假设 FuzzyText returns 是一个字符串,但它是一个 FuzzyText 对象。
我该怎么办?
嗯,你可以像这样调用来获取 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)
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 个字符长且没有 space 的小写字符串。如果有任何 space 它应该是下划线。我试图在 factory.fuzzy.FuzzyText(length=15)
周围放置一个函数。然后我意识到我假设 FuzzyText returns 是一个字符串,但它是一个 FuzzyText 对象。
我该怎么办?
嗯,你可以像这样调用来获取 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)