Ejemplo n.º 1
0
    def setUp(self):
        """
        Создание категорий и товаров для тестов.
        """
        cls = type(self)

        # Цикл создания категорий и принадлежащих к ним товаров, с указанием
        # цены
        for index_ in xrange(cls.CATEGORY_NUM):
            with atomic():    
                new_category = Category.objects.create(
                    name=cls.gen_category_name(index_ + 1))
                new_category.save()
                for index2_ in xrange(cls.PRODUCT_NUM_START + index_ * 2):
                    new_product_price = 90 + index2_ * 2 
                    new_product = Product(category=new_category,
                                          name=cls.gen_product_name(index2_),
                                          price=new_product_price)
                    new_product.save()
        
        # Для сверки
        self._products_num = Product.objects.count()
        self._products_more_100_num = Product.objects\
            .filter(price__gte=100).count()
        category_ids = [item.pk for item in Category.objects\
            .annotate(num_products_total=Count('product', distinct=True))\
            .filter(num_products_total__gt=10)]
        self._products_more_100_num_second = Product.objects\
            .filter(price__gte=100).filter(category_id__in=category_ids)\
            .count()
Ejemplo n.º 2
0
    def run(self):
        cls = type(self)

        # Цикл создания категорий и принадлежащих к ним товаров, с указанием
        # цены
        for index_ in xrange(*cls.CATEGORY_TOTAL_RANGE):
            with atomic():    
                new_category = Category.objects.create(
                    name=cls.gen_category_name(index_))
                new_category.save()
                for index2_ in xrange(
                    1, random.choice(range(*cls.PRODUCT_TOTAL_RANGE))):

                    # Цена продукта
                    new_product_price = random.choice(range(*cls.PRICE_RANGE))
                    new_product = Product(category=new_category,
                                          name=cls.gen_product_name(index2_),
                                          price=new_product_price)
                    new_product.save()