factory-boy - 기본적으로 faker provider에서 제공하는 데이터를 이용해 더미 데이터 생성
docs - basic usage
import factory
class ConversationHistoryFactory(factory.django.DjangoModelFactory):
class Meta:
model = ConversationHistory
django_get_or_create = ("session_id",)
skip_postgeneration_save = True
session_id = factory.Faker("uuid4")
user = factory.Faker("name")
role = factory.Faker("pystr")
# transaction x - transaction 테스트가 필요하지 않을 때 build
chat_history = ConversationHistoryFactory.build()
chat_histories = ConversationHistoryFactory.build_batch(3)
len(chat_histories) # queryset이 아닌 파이썬 객체 3개 생성
>> 3
history_count = ConversationHistory.objects.count()
>> 0
# transaction o - transaction 테스트가 필요할 때 create
chat_history = ConversationHistoryFactory()
chat_histories = ConversationHistoryFactory.create_batch(3)
len(chat_histories)
>> 3
history_count = ConversationHistory.objects.count()
>> 3
history = ConversationHistory.objects.last()
history.session_id
>> 'def03fc9-74bc-48f1-b189-1c152cbc2182'
history.user
>> 'Sean Chambers'
baker: 더미 데이터 모델 객체 생성(임의 데이터)
docs - basic usage
from model_baker import baker
# transaction x
chat_history = baker.prepare("conversations.ConversationHistory")
ConversationHistory.objects.count()
>> 0
# transaction o
chat_history = backer.make("conversations.ConversationHistory")
chat_history.session_id
>> 'ribAQhdHvwnQAauajVieDpMPiWdKodGDYZyPWusNbnboTEaszNtirypbPUJNSaMpDWPdoywGrhzvmyMWFwmGLcQQOtqkwHiXztudqymJErgtWgFpQPWLyWExOPVZTvGF'
chat_history.role
>> 'TeCSxEdEqtRuCHgcJGpZMjYGKuObrykJ'
chat_history.user # null=True
>> (None)
# 명시적값 지정
chat_history_with_user = backer.make("conversations.ConversationHistory", user="jh")
chat_history_with_user.user
>> 'jh'