У меня есть модель:
class Product(models.Model):
url = models.TextField(blank=True)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
class Store(models.Model):
product = GenericRelation('Product')
И задача сельдерея, которая создает продукт для магазина:
def my_celery_task(store_obj_pk):
store_obj = Store.objects.get(pk=store_obj_pk)
Product.objects.create(
content_type=ContentType.objects.get_for_model(store_obj),
object_id=store_obj.pk,
)
И я хочу протестировать эту задачу с pytest
class TestStoreTask:
def test_store_one(self):
self.__test_store(store_product={
'name': 'one'
})
def test_store_two(self):
self.__test_store(store_product={
'name': 'two'
})
def __test_store(self, store_product):
store_obj = Store.objects.create()
my_celery_task(store_obj_pk=store_obj.pk)
print(store_obj.product.all())
Итак, я ожидаю один объект для каждого теста.Но когда я запускаю оба теста в test_store_two
, у меня есть два объекта.И эти объекты имеют идентификаторы 2 и 3.
Так что мой вывод для test_store_one
:
<QuerySet [<Product: Product object (1)>]>
И для test_store_two
:
<QuerySet [<Product: Product object (2)>, <Product: Product object (3)>]>
Я неНе понятно, почему идентификатор был изменен и почему объект появился в новом тестовом примере.