有没有办法在 factoryboy 中使用临时非字段变量?
Is there a way to use a temporary non-field variable in factoryboy?
我正在定义一些工厂来测试我的电子商务商店。我已经创建了一个 Faker 提供程序,它可以 return,例如,一个包含随机产品所有数据的字典。
然后我想使用该字典来填充我工厂中的字段。这是因为字典中的数据是连贯的。我不想创建一个数据不一致的工厂,例如产品名称:“短袖 T 恤”,然后是描述:“漂亮、舒适的鞋子。”有没有一种方法可以实现类似于
的东西
class ProductFactory(factory.django.DjangoModelFactory):
temporary_product_dict = fake.product_dict_from_provider()
name = temporary_product_dict["name"]
description = temporary_product_dict["description"]
category = temporary_product_dict["category"]
...
class Meta:
model = models.Product
当我做这件事时,我得到一个错误,告诉我 temporary_product_dict 不是产品模型的属性。
我使用过class Params
如下:
class OptionTypeFactory(factory.django.DjangoModelFactory):
"""OptionType model factory."""
class Meta:
model = OptionType
class Params:
# Obtain coherent data for an option type from provider
option_type = fake.product_option_type()
name = Params.option_type["name"]
display_name = Params.option_type["display_name"]
index = Params.option_type["index"]
created = datetime.datetime.strptime(
Params.option_type["created"], "%Y-%m-%d %H:%M:%S"
)
updated = datetime.datetime.strptime(
Params.option_type["updated"], "%Y-%m-%d %H:%M:%S"
)
register(OptionTypeFactory)
我正在定义一些工厂来测试我的电子商务商店。我已经创建了一个 Faker 提供程序,它可以 return,例如,一个包含随机产品所有数据的字典。
然后我想使用该字典来填充我工厂中的字段。这是因为字典中的数据是连贯的。我不想创建一个数据不一致的工厂,例如产品名称:“短袖 T 恤”,然后是描述:“漂亮、舒适的鞋子。”有没有一种方法可以实现类似于
的东西class ProductFactory(factory.django.DjangoModelFactory):
temporary_product_dict = fake.product_dict_from_provider()
name = temporary_product_dict["name"]
description = temporary_product_dict["description"]
category = temporary_product_dict["category"]
...
class Meta:
model = models.Product
当我做这件事时,我得到一个错误,告诉我 temporary_product_dict 不是产品模型的属性。
我使用过class Params
如下:
class OptionTypeFactory(factory.django.DjangoModelFactory):
"""OptionType model factory."""
class Meta:
model = OptionType
class Params:
# Obtain coherent data for an option type from provider
option_type = fake.product_option_type()
name = Params.option_type["name"]
display_name = Params.option_type["display_name"]
index = Params.option_type["index"]
created = datetime.datetime.strptime(
Params.option_type["created"], "%Y-%m-%d %H:%M:%S"
)
updated = datetime.datetime.strptime(
Params.option_type["updated"], "%Y-%m-%d %H:%M:%S"
)
register(OptionTypeFactory)