代码之家  ›  专栏  ›  技术社区  ›  Kim Stacks

如何设置特定长度的特定伪造随机字符串并使用下划线作为空格?

  •  0
  • Kim Stacks  · 技术社区  · 7 年前
    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)
    

    我需要下划线_15字段是一个小写字符串,具体长度只有15个字符,没有空格。如果有空格,应该是下划线。我试着用一个函数 factory.fuzzy.FuzzyText(length=15) . 然后我意识到我假设FuzzyText返回一个字符串,但它是一个FuzzyText对象。

    我该怎么办?

    1 回复  |  直到 7 年前
        1
  •  4
  •   ruddra    7 年前

    好吧,你可以拿到 FuzzyText 通过如下方式调用对象值:

    >> f = factory.fuzzy.FuzzyText(length=15)
    >> f.fuzz()
    

    但是,在本文中,字符可以是大写或小写。因此,如果希望使用排他性小写字符,则可以覆盖 模糊文本 这样地:

    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)