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'])
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())
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))