【问题标题】:How to set specific faker random string of specific length and using underscores for spaces?如何设置特定长度的特定伪造随机字符串并使用下划线作为空格?
【发布时间】:2019-05-11 22:11:33
【问题描述】:
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 对象。

我该怎么办?

【问题讨论】:

    标签: python django string faker factory-boy


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 2020-12-25
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多