Как установить конкретную случайную строку фейкера определенной длины и использовать подчеркивание для пробелов? - PullRequest
0 голосов
/ 11 декабря 2018
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 голосов
/ 11 декабря 2018

Что ж, вы можете получить значение 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)
...