Python 为模型测试伪造区域设置字段

Python 为模型测试伪造区域设置字段,python,django,testing,faker,Python,Django,Testing,Faker,我只是在这样一个模型中收集了一些语言: 从django.conf.global_设置导入语言 类可用语言(models.Model): code=models.CharField(选项=LANGUAGES,unique=True) 在factories.py中,我想伪造code字段。我曾尝试从语言中随机选取一个区域设置代码,但失败了。它没有创建一个AvailableLanguage的实例,而是在各种语言之间循环,并迅速引发问题,因为code设置为unique 所以我想创建一个作为单例的提供者,

我只是在这样一个模型中收集了一些语言:

从django.conf.global_设置导入语言
类可用语言(models.Model):
code=models.CharField(选项=LANGUAGES,unique=True)
factories.py
中,我想伪造
code
字段。我曾尝试从
语言中随机选取一个区域设置代码,但失败了。它没有创建一个
AvailableLanguage
的实例,而是在各种语言之间循环,并迅速引发问题,因为
code
设置为
unique

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


类提供程序(BaseProvider):
lang_代码=未实现
定义初始化(自身,生成器):
self.langs=语言
self.generator=generator
def uu getattribute(self,attrib):
如果attrib==“语言代码”:
self.lang_code=self.langs.pop()[0]
返回self.lang_代码
其他:
返回super()。\uuuuGetAttribute\uuuuuuuuuuuuuuuuuiB)
fake.add_提供程序(提供程序)
类可用语言工厂(DjangoModelFactory):
代码=伪造者(“语言代码”)
类元:
模型=可用语言
您可以尝试使用 来自工厂男孩

从django.conf.global_设置导入语言
进口工厂
类AvailableLanguageFactory(factory.djangModelFactory):
code=factory.Iterator(语言,getter=lambda l:l[0])
类元:
模型=可用语言