[英]Django Factory boy usage
給定以下模型:
from django.db import models
class A(models.Model):
foo = models.TextField()
# B inherits from A, it's not abstract so it should
# create a table with a foreign key relationship
class B(A):
bar = models.TextField()
並使用DjangoModel
工廠進行以下測試:
from django.test import TestCase
import factory
from factory.django import DjangoModelFactory
from .models import A, B
class AFactory(DjangoModelFactory):
foo = factory.Faker('name')
class Meta:
model = A
class BFactory(DjangoModelFactory):
bar = factory.Faker('name')
class Meta:
model = B
class BTestCase(TestCase):
def test_1(self):
b = BFactory()
print(b.foo) # prints ''
如何獲取b.foo
來引用具有有效foo
屬性的實際A
實體?
此刻b.foo
只是返回一個空字符串。 但是,如果我使用AFactory
創建一個A
實體,則該實體具有正確填充的foo
字段:
>>> a_ent = AFactory()
>>> a_ent.foo
'Nicholas Williams'
我希望BFactory為我創建b
可以引用的A
實體。
那可能嗎?
您只需要從AFactory擴展BFactory:
class AFactory(DjangoModelFactory):
foo = factory.Faker('name')
class Meta:
model = A
class BFactory(AFactory):
bar = factory.Faker('name')
class Meta:
model = B
b = BFactory()
print(b.foo) # Robert Rogers
print(b.bar) # Maria Clark
BFactory用於通過B模型創建數據庫記錄,因此要實現此目的,您需要在BFactory上定義工廠字段。 這可以通過上面的繼承輕松完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.