gpt4 book ai didi

python - 为模型测试伪造语言环境字段

转载 作者:行者123 更新时间:2023-11-28 21:17:17 31 4
gpt4 key购买 nike

我只是在这样的模型中有一组语言:

from django.conf.global_settings import LANGUAGES

class AvailableLanguage(models.Model):
code = models.CharField(choices=LANGUAGES, unique=True)

factories.py 中,我想伪造 code 字段。我试图从 LANGUAGES 中随机获取语言环境代码,但它失败了。它没有创建一个 AvailableLanguage 实例,而是遍历各种语言并迅速引发一个问题,因为 code 被设置为 unique

于是我想到了创建一个Provider作为单例,同样的原因失败了。它会生成所有区域设置代码,而不是只提供一个!


class Provider(BaseProvider):

lang_code = NotImplemented

def __init__(self, generator):
self.langs = LANGUAGES
self.generator = generator

def __getattribute__(self, attrib):
if attrib == 'lang_code':
self.lang_code = self.langs.pop()[0]
return self.lang_code
else:
return super().__getattribute__(attrib)


fake.add_provider(Provider)


class AvailableLanguageFactory(DjangoModelFactory):

code = Faker('lang_code')

class Meta:
model = AvailableLanguage

最佳答案

你可以尝试使用Iterator来自工厂男孩。

from django.conf.global_settings import LANGUAGES
import factory


class AvailableLanguageFactory(factory.DjangoModelFactory):
code = factory.Iterator(LANGUAGES, getter=lambda l: l[0])

class Meta:
model = AvailableLanguage

关于python - 为模型测试伪造语言环境字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55863073/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com