如何设置特定长度的特定造假者随机字符串并在空格下划线?

时间:2018-12-10 23:40:59

标签: python django string faker factory-boy

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对象。

我该怎么办?

1 个答案:

答案 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)