Пример #1
0
class ShoppingCartTest(unittest.TestCase):
    def setUp(self):
        self.shcart = ShoppingCart()

    def test_deal_discount(self):
        self.shcart.add_discount(['2013.11.11 | 0.7 | 电子'])
        ret = self.shcart.deal_discount()
        self.assertEqual(ret, {'电子': ['2013.11.11', 0.7]})

    def test_deal_coupons(self):
        self.shcart.add_coupon([
            '2014.3.2 1000 200', '1999.3.2 2000 500', '2014.5.2 500 50',
            '2014.3.12 5000 1500'
        ])
        self.shcart.set_paydate('2013.11.11')
        rets = []
        rets.append(self.shcart.deal_coupons(400))
        rets.append(self.shcart.deal_coupons(1500))
        rets.append(self.shcart.deal_coupons(3000))
        self.assertEqual(rets, [0, 200, 200])

    def test_compare_date(self):
        rets = []
        rets.append(self.shcart.compare_date('2014.3.2', '2013.11.11'))
        rets.append(self.shcart.compare_date('2014.3.2', '2014.3.2'))
        rets.append(self.shcart.compare_date('2014.3.2', '2015.11.11'))
        self.assertEqual(rets, [1, 0, -1])

    def test_add_discount(self):
        self.shcart.add_discount(['2013.11.11 | 0.7 | 电子'])
        self.assertEqual(self.shcart.discount_info, ['2013.11.11 | 0.7 | 电子'])

    def test_add_goods(self):
        goods = [
            '1 * ipad : 2399.00', '1 * 显示器 : 1799.00', '12 * 啤酒 : 25.00',
            '5 * 面包 : 9.00'
        ]
        self.shcart.add_goods(goods)
        self.assertEqual(self.shcart.goods_info, goods)

    def test_set_paydate(self):
        self.shcart.set_paydate('2013.11.11')
        self.assertEqual(self.shcart.pay_date, '2013.11.11')

    def test_add_coupon(self):
        self.shcart.add_coupon(['2014.3.2 1000 200'])
        self.assertEqual(self.shcart.coupons, ['2014.3.2 1000 200'])
Пример #2
0
                allinfo[idx].append(each.strip())
            else:
                idx += 1
    except:
        log.logger.error('deal_file()_%s' % filepath)
        log.logger.error(traceback.format_exc())
    finally:
        if fileobj:
            fileobj.close()

    return allinfo


if __name__ == '__main__':
    filepath = os.path.join(Config.base_path, 'test', 'test_data',
                            'case_A.txt')  # test
    # filepath = r''  # 添加文件路径或者使用命令行方式输入文件(第一个参数)
    if len(sys.argv) < 2 and not filepath:
        print('缺少文件路径参数!')
    else:
        if len(sys.argv) > 1:
            filepath = sys.argv[1]
        allinfo = deal_file(filepath)
        shcart = ShoppingCart()
        shcart.add_discount(allinfo[0])
        shcart.add_goods(allinfo[1])
        if allinfo[2]:
            shcart.set_paydate(allinfo[2][0])
        shcart.add_coupon(allinfo[3])
        print(shcart.start_settlement())
Пример #3
0
class ShoppingCartTest(unittest.TestCase):
    '''
    Case A : 题目用例,有促销,有优惠券
    Case B : 题目用例,无促销,无优惠券
    Case 3 : 促销信息与结算日期不在同一天,不享受促销优惠
    Case 4 : 没有促销活动,有优惠券,但优惠券过期
    Case 5 : 有促销活动,有优惠券,但优惠券过期
    Case 6 : 多个促销活动
    Case 7 : 多张优惠券,含过期
    Case 8 : 购物车没有商品
    # 信息异常时
    Case 9 : 促销信息不全,则此类产品不进行优惠
    Case 10 : 优惠券信息不全,此张优惠券无效
    '''
    def setUp(self):
        self.shcart = ShoppingCart()

    def test_start_settlement_1(self):
        '''
        Case  A
        题目用例,有促销,有优惠券
        :return:
        '''
        case_path = os.path.join(Config.test_data_path, 'case_A.txt')
        allinfo = deal_file(case_path)
        self.shcart.add_discount(allinfo[0])
        self.shcart.add_goods(allinfo[1])
        self.shcart.set_paydate(allinfo[2][0])
        self.shcart.add_coupon(allinfo[3])
        ret = self.shcart.start_settlement()
        self.assertEqual(
            ret,
            Decimal(3083.60).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP))

    def test_start_settlement_2(self):
        '''
        Case  B
        题目用例,无促销,无优惠券
        :return:
        '''
        case_path = os.path.join(Config.test_data_path, 'case_B.txt')
        allinfo = deal_file(case_path)
        self.shcart.add_discount(allinfo[0])
        self.shcart.add_goods(allinfo[1])
        self.shcart.set_paydate(allinfo[2][0])
        self.shcart.add_coupon(allinfo[3])
        ret = self.shcart.start_settlement()
        ret = self.shcart.start_settlement()
        self.assertEqual(
            ret,
            Decimal(43.54).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP))

    def test_start_settlement_3(self):
        '''
        Case  3
        促销信息与结算日期不在同一天,不享受促销优惠
        :return:
        '''
        case_path = os.path.join(Config.test_data_path, 'case_3.txt')
        allinfo = deal_file(case_path)
        self.shcart.add_discount(allinfo[0])
        self.shcart.add_goods(allinfo[1])
        self.shcart.set_paydate(allinfo[2][0])
        self.shcart.add_coupon(allinfo[3])
        ret = self.shcart.start_settlement()
        ret = self.shcart.start_settlement()
        self.assertEqual(
            ret,
            Decimal(4043.00).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP))

    def test_start_settlement_4(self):
        '''
        Case  4
        没有促销活动,有优惠券,但优惠券过期
        :return:
        '''
        case_path = os.path.join(Config.test_data_path, 'case_4.txt')
        allinfo = deal_file(case_path)
        self.shcart.add_discount(allinfo[0])
        self.shcart.add_goods(allinfo[1])
        self.shcart.set_paydate(allinfo[2][0])
        self.shcart.add_coupon(allinfo[3])
        ret = self.shcart.start_settlement()
        ret = self.shcart.start_settlement()
        self.assertEqual(
            ret,
            Decimal(4543.00).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP))

    def test_start_settlement_5(self):
        '''
        Case  5
        有促销活动,有优惠券,但优惠券过期
        :return:
        '''
        case_path = os.path.join(Config.test_data_path, 'case_5.txt')
        allinfo = deal_file(case_path)
        self.shcart.add_discount(allinfo[0])
        self.shcart.add_goods(allinfo[1])
        self.shcart.set_paydate(allinfo[2][0])
        self.shcart.add_coupon(allinfo[3])
        ret = self.shcart.start_settlement()
        ret = self.shcart.start_settlement()
        self.assertEqual(
            ret,
            Decimal(4393.00).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP))

    def test_start_settlement_6(self):
        '''
        Case  6
        多个促销活动
        :return:
        '''
        case_path = os.path.join(Config.test_data_path, 'case_6.txt')
        allinfo = deal_file(case_path)
        self.shcart.add_discount(allinfo[0])
        self.shcart.add_goods(allinfo[1])
        self.shcart.set_paydate(allinfo[2][0])
        self.shcart.add_coupon(allinfo[3])
        ret = self.shcart.start_settlement()
        ret = self.shcart.start_settlement()
        self.assertEqual(
            ret,
            Decimal(2924.60).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP))

    def test_start_settlement_7(self):
        '''
        Case  7
        多张优惠券,含过期
        :return:
        '''
        case_path = os.path.join(Config.test_data_path, 'case_7.txt')
        allinfo = deal_file(case_path)
        self.shcart.add_discount(allinfo[0])
        self.shcart.add_goods(allinfo[1])
        self.shcart.set_paydate(allinfo[2][0])
        self.shcart.add_coupon(allinfo[3])
        ret = self.shcart.start_settlement()
        ret = self.shcart.start_settlement()
        self.assertEqual(
            ret,
            Decimal(2624.60).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP))

    def test_start_settlement_8(self):
        '''
        Case  8
        购物车没有商品
        :return:
        '''
        case_path = os.path.join(Config.test_data_path, 'case_8.txt')
        allinfo = deal_file(case_path)
        self.shcart.add_discount(allinfo[0])
        self.shcart.add_goods(allinfo[1])
        self.shcart.set_paydate(allinfo[2][0])
        self.shcart.add_coupon(allinfo[3])
        ret = self.shcart.start_settlement()
        ret = self.shcart.start_settlement()
        self.assertEqual(
            ret,
            Decimal(0.00).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP))

    def test_start_settlement_9(self):
        '''
        Case  9
        促销信息不全,则此类产品不进行优惠
        :return:
        '''
        case_path = os.path.join(Config.test_data_path, 'case_9.txt')
        allinfo = deal_file(case_path)
        self.shcart.add_discount(allinfo[0])
        self.shcart.add_goods(allinfo[1])
        self.shcart.set_paydate(allinfo[2][0])
        self.shcart.add_coupon(allinfo[3])
        ret = self.shcart.start_settlement()
        ret = self.shcart.start_settlement()
        self.assertEqual(
            ret,
            Decimal(300.00).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP))

    def test_start_settlement_10(self):
        '''
        Case  10
        优惠券信息不全,此张优惠券无效
        :return:
        '''
        case_path = os.path.join(Config.test_data_path, 'case_10.txt')
        allinfo = deal_file(case_path)
        self.shcart.add_discount(allinfo[0])
        self.shcart.add_goods(allinfo[1])
        self.shcart.set_paydate(allinfo[2][0])
        self.shcart.add_coupon(allinfo[3])
        ret = self.shcart.start_settlement()
        ret = self.shcart.start_settlement()
        self.assertEqual(
            ret,
            Decimal(4393.00).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP))