def test_login_pos(self):
        # 查询设备DeviceId,SerialNo
        LoginPos.operator_id = int(self.params['id'])
        query = 'SELECT branch_id, name, number FROM account_operator WHERE id = %s'
        data = (self.params['id'], )
        result = saofudb.select_one_record(query, data)
        branch_id = result[0]
        self.expected_result['operator']['name'] = result[1]
        self.expected_result['operator']['number'] = result[2]

        query = 'SELECT device_no, serial_no FROM device WHERE shop_branch_id = %s'
        data = (branch_id, )
        result = saofudb.select_one_record(query, data)
        LoginPos.device_id = result[0]
        LoginPos.serial_no = result[1]

        self.expected_result['operator']['id'] = int(self.params['id'])

        # 添加请求头
        headers = {
            'DeviceId': LoginPos.device_id,
            'SerialNo': LoginPos.serial_no,
            'Content-Type': 'application/json;charset=utf-8',
            'ProductVersion': product_version,
            'ProtocolVersion': protocol_version
        }
        self.http.set_header(headers)

        logger.info('正在发起POST请求...')
        self.params = json.dumps(self.params)
        self.params = self.params.encode('utf-8')
        response = self.http.post(self.url, self.params)
        response_body = response[0].decode('utf-8')
        response_body = json.loads(response_body)
        logger.info('正在解析返回结果:%s' % response)

        LoginPos.token = response_body['token']

        # 断言
        self.assertEqual(response_body['code'],
                         self.expected_result['code'],
                         msg='code不为4001')
        self.assertEqual(response_body['message'],
                         self.expected_result['message'],
                         msg='message 不等于“成功”')
        self.assertEqual(response_body['operator']['id'],
                         self.expected_result['operator']['id'],
                         msg='operator_id 错误')
        self.assertEqual(response_body['operator']['name'],
                         self.expected_result['operator']['name'],
                         msg='operator_name错误')
        self.assertEqual(response_body['operator']['number'],
                         self.expected_result['operator']['number'],
                         msg='operator_number错误')
        self.assertEqual(response_body['reason'],
                         self.expected_result['reason'],
                         msg='登录不成功 reason不等于“成功”')
        self.assertEqual(response_body['success'],
                         bool(self.expected_result['success']),
                         msg='success不等于True')
    def test_add_to_cart(self):
        headers = cookie
        self.http.set_header(headers)

        self.params['serial'] = global_serial
        self.params['openId'] = global_openId
        self.expected_result['amount'] = self.params['amount']
        self.expected_result['mall_goods_id'] = self.params['mallGoodsId']

        # 提取customer_id供断言使用
        query = 'SELECT id FROM customer WHERE channel_serial=%s'
        data = (self.params['openId'], )
        customer_id = saofudb.select_one_record(query, data)
        customer_id = customer_id[0]

        # 提取shop_id供断言使用
        query = 'SELECT id FROM shop WHERE serial=%s'
        data = (global_serial, )
        shop_id = saofudb.select_one_record(query, data)
        self.expected_result['shop_id'] = shop_id[0]

        logger.info('正在发起POST请求...')
        self.params = urllib.parse.urlencode(
            self.params)  # 将参数转为url编码字符串# 注意,此处params为字典类型的数据
        self.params = self.params.encode('utf-8')
        response = self.http.post(self.url, self.params)
        response = response[0].decode('utf-8')
        response = json.loads(response)

        logger.info('正在解析返回结果:%s' % response)

        # 断言
        self.assertEqual(response['success'],
                         bool(self.expected_result['success']),
                         '假入购物车失败,success不为True')

        query = 'SELECT amount, mall_goods_id, shop_id, closed, id FROM mall_shopping_cart WHERE customer_id = %s and closed=%s ' \
                'ORDER BY id DESC LIMIT 1'
        data = (customer_id, 1)
        result = saofudb.select_one_record(query, data)

        self.assertEqual(result[0],
                         self.expected_result['amount'],
                         msg='购物车商品数amount存储错误')
        self.assertEqual(result[1],
                         self.expected_result['mall_goods_id'],
                         msg='购物车商品mall_goods_id存储错误')
        self.assertEqual(result[2],
                         self.expected_result['shop_id'],
                         msg='购物车商户shop_id存储错误')
        self.assertEqual(result[3],
                         self.expected_result['closed'],
                         msg='购物车closed存储错误')

        AddToCart.strid = result[4]
    def setUp(self):
        # 获取客户id和姓名,shopId
        query = 'SELECT id FROM customer WHERE channel_serial=%s'
        self.params['openId'] = global_openId
        data = (self.params['openId'], )
        result = saofudb.select_one_record(query, data)
        customer_id = result[0]

        # 查询会员账户余额,积分等相关信息
        query = 'SELECT balance, bonus, sum_amount_expend, sum_bonus_expend, balance_total FROM customer_account WHERE customer_id = %s'
        data = (customer_id, )
        result = saofudb.select_one_record(query, data)
        bonus = result[1]  # 会员积分
    def setUp(self):
        # 初始化购物车数据
        query = 'SELECT id FROM customer WHERE channel_serial=%s'
        data = (global_openId, )
        customer_id = saofudb.select_one_record(query, data)
        customer_id = customer_id[0]

        query = 'UPDATE mall_shopping_cart SET amount = 0 WHERE customer_id = %s and closed=1' % customer_id
        saofudb.execute_update(query)
Ejemplo n.º 5
0
    def setUp(self):
        # 判断代金券\折扣券是否有剩余库存,是否下架
        logger.info(self.url)
        str_list = self.url.split('/')
        coupon_serial = str_list[3]
        query = 'SELECT sku_quantity, listing FROM base_info WHERE serial = %s'
        data = (coupon_serial, )
        result = saofudb.select_one_record(query, data)
        sku_quantity = result[0]

        ison = result[1]
        if sku_quantity == 1:
            query = 'UPDATE base_info SET sku_quantity = 100000000'
            saofudb.execute_update(query)
        if ison == 0:
            query = 'UPDATE base_info SET listing = 1'
            saofudb.execute_update(query)
    def test_click_goods(self):
        headers = cookie
        self.http.set_header(headers)

        mall_goods_id = self.params['id']

        logger.info('正在发起GET请求...')
        self.params['serial'] = global_serial
        self.params = urllib.parse.urlencode(
            self.params)  # 将参数转为url编码字符串# 注意,此处params为字典类型的数据
        response = self.http.get(self.url, self.params)
        status_code = response[2]
        # logger.info('正在解析返回结果:%s' % response[0].decode('utf-8'))

        # 解析HTML文档
        parser = MyHTMLParser(strict=False)
        parser.feed(response[0].decode('utf-8'))
        starttag_data = parser.get_starttag_data()

        query = 'SELECT name FROM mall_goods WHERE id=%s'
        data = (mall_goods_id, )
        mall_goods_name = saofudb.select_one_record(query, data)
        mall_goods_name = mall_goods_name[0]
        self.expected_result['goods_name'] = mall_goods_name

        goods_name = ''
        for data in starttag_data:
            if data[1].find(mall_goods_name) != -1:
                goods_name = data[1].replace('\r', '')
                goods_name = goods_name.replace('\n', '')
                goods_name = goods_name.replace('\t', '')

        # 断言
        self.assertEqual(status_code,
                         self.expected_result['status'],
                         msg='http状态码status不等于200')
        self.assertEqual(goods_name,
                         self.expected_result['goods_name'],
                         msg='无法打开商品详情')
    def test_del_from_cart(self):
        headers = cookie
        self.http.set_header(headers)

        self.params['strIds'] = AddToCart.strid
        self.params['serial'] = global_serial

        logger.info('正在发起POST请求...')
        self.params = urllib.parse.urlencode(
            self.params)  # 将参数转为url编码字符串# 注意,此处params为字典类型的数据
        self.params = self.params.encode('utf-8')
        response = self.http.post(self.url, self.params)
        response = response[0].decode('utf-8')
        response = json.loads(response)

        logger.info('正在解析返回结果:%s' % response)
        query = 'SELECT amount, mall_goods_id, shop_id, closed, id FROM mall_shopping_cart WHERE id=%s'
        data = (AddToCart.strid, )
        result = saofudb.select_one_record(query, data)
        # 断言
        self.assertEqual(response['success'],
                         bool(self.expected_result['success']),
                         '商品移出购物车失败,success不为True')
        self.assertEqual(result, None, msg='实际未删除购物车记录')
    def test_account_pay_with_point_discount(self):
        headers = cookie
        self.http.set_header(headers)

        self.params['productOrderId'] = CMOrder.attach
        self.params['openId'] = global_openId

        # 获取商品订单id
        query = 'SELECT id FROM trade_order WHERE product_order_id=%s'
        data = (self.params['productOrderId'], )
        result = saofudb.select_one_record(query, data)
        self.params['orderId'] = result[0]
        order_id = result[0]

        # 获取客户id和姓名,shopId
        query = 'SELECT id, name, shop_id FROM customer WHERE channel_serial=%s'
        data = (self.params['openId'], )
        result = saofudb.select_one_record(query, data)
        self.params['customerId'] = result[0]
        customer_id = result[0]
        self.params['customerName'] = result[1]
        self.params['shopId'] = result[2]
        shop_id = result[2]

        # 查询会员账户余额,积分等相关信息
        query = 'SELECT balance, bonus, sum_amount_expend, sum_bonus_expend, balance_total FROM customer_account WHERE customer_id = %s'
        data = (customer_id, )
        result = saofudb.select_one_record(query, data)
        balance_old = result[0]  # 会员账户余额,单位:分
        bonus_old = result[1]  # 会员积分
        sum_amount_expend_old = result[2]  # 总花费金额,单位:分
        sum_bonus_expend_old = result[3]  # 总花费积分

        logger.info('正在发起POST请求...')
        self.params = urllib.parse.urlencode(
            self.params)  # 将参数转为url编码字符串# 注意,此处params为字典类型的数据
        self.params = self.params.encode('utf-8')

        response = self.http.post(self.url, self.params)
        response = response[0].decode('utf-8')
        response = json.loads(response)

        logger.info('正在解析返回结果:%s' % response)

        # 查询会员账户余额,积分等相关信息
        query = 'SELECT balance, bonus, sum_amount_expend, sum_bonus_expend, balance_total FROM customer_account WHERE customer_id = %s'
        data = (customer_id, )
        result = saofudb.select_one_record(query, data)
        balance_new = result[0]  # 会员账户余额,单位:分
        bonus_new = result[1]  # 会员积分
        sum_amount_expend_new = result[2]  # 总花费金额,单位:分
        sum_bonus_expend_new = result[3]  # 总花费积分

        # 查询实付金额
        query = 'SELECT receipt_fee FROM trade_order WHERE id = %s'
        data = (order_id, )
        result = saofudb.select_one_record(query, data)
        receipt_fee_new = result[0]

        query = 'SELECT price FROM mall_goods WHERE id = %s'
        data = (CMOrder.mall_goods_id, )
        result = saofudb.select_one_record(query, data)
        goods_price = result[0]

        # 查询运费
        query = 'SELECT deliver_fee FROM mall_config WHERE shop_id = %s'
        data = (shop_id, )
        result = saofudb.select_one_record(query, data)
        deliver_fee = result[0]

        self.expected_result['receipt_fee'] = CMOrder.amount * goods_price * (
            100 - GetInCoupon.discount) / 10.0 + deliver_fee
        self.expected_result[
            'balance'] = balance_old - self.expected_result['receipt_fee']
        self.expected_result['bonus'] = bonus_old
        self.expected_result[
            'sum_amount_expend'] = sum_amount_expend_old + self.expected_result[
                'receipt_fee']
        self.expected_result['sum_bonus_expend'] = sum_bonus_expend_old

        # 断言
        self.assertEqual(response['success'],
                         bool(self.expected_result['success']),
                         '储值卡支付失败(使用会员账户支付,不使用任何优惠)')
        self.assertEqual(receipt_fee_new,
                         self.expected_result['receipt_fee'],
                         msg='消费者实付金额计算错误')
        self.assertEqual(balance_new,
                         self.expected_result['balance'],
                         msg='消费者余额计算错误')
        self.assertEqual(bonus_new,
                         self.expected_result['bonus'],
                         msg='消费者积分计算错误')
        self.assertEqual(sum_amount_expend_new,
                         self.expected_result['sum_amount_expend'],
                         msg='消费者总花费金额计算错误')
        self.assertEqual(sum_bonus_expend_new,
                         self.expected_result['sum_bonus_expend'],
                         msg='消费者总花费积分计算错误')
        self.assertEqual(
            record_num,
            self.expected_result['coupon_weixin_verification_record'],
            msg='折扣券核销不成功')
    def test_plist_default(self):
        content_type = {
            'Content-Type': 'application/x-www-form-urlencoded',
            'charset': 'utf-8'
        }
        headers = content_type.copy()
        #cookie = {'Cookie':'10549840601068216320=ous64uFCCLMyXYDJ-MkNilyCI5C'}
        headers.update(cookie)
        self.http.set_header(headers)

        logger.info('正在发起POST请求...')
        self.params['serial'] = global_serial
        self.params = urllib.parse.urlencode(
            self.params)  # 将参数转为url编码字符串# 注意,此处params为字典类型的数据
        self.params = self.params.encode('utf-8')
        response = self.http.post(self.url, self.params)
        PList.step_output = response  # 保存返回结果供其它接口使用
        response = response[0].decode('utf-8')
        response = json.loads(response)

        logger.info('正在解析返回结果:%s' % response)

        # 断言
        query = 'SELECT COUNT(*) FROM mall_goods AS mg ' \
                'JOIN mall_goods_cate AS mgc ON mg.cate_id=mgc.id ' \
                'JOIN template_cate AS tc ON tc.cate_id=mgc.id AND tc.template_id=1 AND tc.status=1 ' \
                'WHERE mg.shop_id=%s AND mg.del_flag=%s AND mg.status=%s AND mg.business_id NOT IN (%s, %s)'
        data = (42, 0, 1, 1, 2)
        result = saofudb.select_one_record(query, data)
        totalRows = result[0]
        totalPages = totalRows // int(self.expected_result['pageSize']) + 1

        self.assertEqual(response['pageInfo']['currentPage'],
                         self.expected_result['currentPage'],
                         msg='currentPage不等于1')
        self.assertEqual(response['pageInfo']['pageSize'],
                         self.expected_result['pageSize'],
                         msg='pageSize不等于10')
        self.assertEqual(response['pageInfo']['pageStartRow'],
                         self.expected_result['pageStartRow'],
                         msg='pageStartRow不等于0')
        self.assertEqual(response['pageInfo']['pagination'],
                         bool(self.expected_result['pagination']),
                         msg='pagination不为True')
        self.assertEqual(response['pageInfo']['totalPages'],
                         totalPages,
                         msg='totalPages错误')
        self.assertEqual(response['pageInfo']['totalRows'],
                         totalRows,
                         msg='totalRows错误')

        query = 'SELECT sku_quantity FROM mall_goods WHERE id=%s'
        data = (26838, )
        result = saofudb.select_one_record(query, data)
        skuQuantity1 = result[0]

        query = 'SELECT sku_quantity FROM mall_goods WHERE id=%s'
        data = (26839, )
        result = saofudb.select_one_record(query, data)
        skuQuantity2 = result[0]

        for item in response['dataList']:
            if item['id'] == 26838:
                self.assertEqual(item['name'],
                                 self.expected_result['goodsinfo'][0]['name'],
                                 msg='商品名称读取错误')
                self.assertEqual(item['price'],
                                 self.expected_result['goodsinfo'][0]['price'],
                                 msg='商品价格price读取错误')
                self.assertEqual(
                    item['description'],
                    self.expected_result['goodsinfo'][0]['description'],
                    msg='商品描述读取错误')
                self.assertEqual(
                    item['iconUrl'],
                    self.expected_result['goodsinfo'][0]['iconUrl'],
                    msg='商品连接iconUrl读取错误')
                self.assertEqual(
                    item['standard'],
                    self.expected_result['goodsinfo'][0]['standard'],
                    msg='商品规格读取错误')
                self.assertEqual(item['skuQuantity'],
                                 skuQuantity1,
                                 msg='商品库存读取错误')
            elif item['id'] == 26839:
                self.assertEqual(item['name'],
                                 self.expected_result['goodsinfo'][1]['name'],
                                 msg='商品名称读取错误')
                self.assertEqual(item['price'],
                                 self.expected_result['goodsinfo'][1]['price'],
                                 msg='商品价格price读取错误')
                self.assertEqual(
                    item['description'],
                    self.expected_result['goodsinfo'][1]['description'],
                    msg='商品描述读取错误')
                self.assertEqual(
                    item['iconUrl'],
                    self.expected_result['goodsinfo'][1]['iconUrl'],
                    msg='商品连接iconUrl读取错误')
                self.assertEqual(
                    item['standard'],
                    self.expected_result['goodsinfo'][1]['standard'],
                    msg='商品规格读取错误')
                self.assertEqual(item['skuQuantity'],
                                 skuQuantity2,
                                 msg='商品库存读取错误')
Ejemplo n.º 10
0
    def test_get_in_coupon(self):
        headers = cookie
        headers.update(cookie)
        self.http.set_header(headers)

        str_list = self.url.split('/')
        logger.info(str_list)
        coupon_serial = str_list[3]

        # 记录初始库存
        query = 'SELECT sku_quantity FROM base_info WHERE serial = %s'
        data = (coupon_serial, )
        result = saofudb.select_one_record(query, data)
        sku_quantity_old = result[0]

        logger.info('正在发起POST请求...')
        self.url = self.url.replace('[global_openId]', global_openId)
        self.params = self.params.encode('utf-8')
        response = self.http.post(self.url, self.params)
        response = response[0].decode('utf-8')
        response = json.loads(response)

        logger.info('正在解析返回结果:%s' % response)

        GetInCoupon.card_code = response['cardCode']  # 供其它支付使用

        query = 'SELECT title, sub_title, notice, description, use_limit, date_info_type, sku_quantity, detail_txt, service_phone, id ' \
                'FROM base_info WHERE serial = %s'
        data = (coupon_serial, )
        result = saofudb.select_one_record(query, data)
        self.expected_result['title'] = result[0]
        self.expected_result['subTitle'] = result[1]
        self.expected_result['notice'] = result[2]
        self.expected_result['description'] = result[3]
        self.expected_result['useLimit'] = result[4]
        self.expected_result['dateInfoType'] = result[5]
        self.expected_result['skuQuantity'] = sku_quantity_old - 1
        sku_quantity_new = result[6]
        self.expected_result['detailTxt'] = result[7]
        self.expected_result['servicePhone'] = result[8]
        base_info_Id = result[9]

        query = 'SELECT cash_least_cost, cash_reduce_cost,discount  FROM coupon_weixin WHERE base_info_Id = %s'
        data = (base_info_Id, )
        result = saofudb.select_one_record(query, data)

        self.expected_result['cashLeastCost'] = result[0]
        self.expected_result['cashReduceCost'] = result[1]
        GetInCoupon.cash_reduce_cost = result[1]
        self.expected_result['discount'] = result[2]
        GetInCoupon.discount = result[2]

        logger.info(response['cwc']['cw']['baseInfo']['codeType'])
        # 断言
        self.assertEqual(response['getByWeixin'],
                         bool(self.expected_result['getByWeixin']),
                         msg='getByWexin不为false')
        self.assertEqual(response['cwc']['cw']['baseInfo']['codeType'],
                         self.expected_result['codeType'],
                         msg='codeType不为2')
        self.assertEqual(response['cwc']['cw']['baseInfo']['title'],
                         self.expected_result['title'],
                         msg='title错误')
        self.assertEqual(response['cwc']['cw']['baseInfo']['subTitle'],
                         self.expected_result['subTitle'],
                         msg='subTitle错误')
        self.assertEqual(response['cwc']['cw']['baseInfo']['notice'],
                         self.expected_result['notice'],
                         msg='notice错误')
        self.assertEqual(response['cwc']['cw']['baseInfo']['description'],
                         self.expected_result['description'],
                         msg='description错误')
        self.assertEqual(response['cwc']['cw']['baseInfo']['useLimit'],
                         self.expected_result['useLimit'],
                         msg='useLimit错误')
        self.assertEqual(response['cwc']['cw']['baseInfo']['dateInfoType'],
                         self.expected_result['dateInfoType'],
                         msg='dateInfoType错误')
        self.assertEqual(response['cwc']['cw']['baseInfo']['cardType'],
                         self.expected_result['cardType'],
                         msg='cardType不为1')
        self.assertEqual(response['cwc']['cw']['baseInfo']['listing'],
                         self.expected_result['listing'],
                         msg='listing不为1')
        self.assertEqual(response['cwc']['cw']['baseInfo']['fitAll'],
                         bool(self.expected_result['fitAll']),
                         msg='fitAll不为true')
        self.assertEqual(response['cwc']['cw']['baseInfo']['listing'],
                         self.expected_result['listing'],
                         msg='listing不为1')
        self.assertEqual(response['cwc']['cw']['baseInfo']['detailTxt'],
                         self.expected_result['detailTxt'],
                         msg='detail_txt错误')
        self.assertEqual(response['cwc']['cw']['baseInfo']['servicePhone'],
                         self.expected_result['servicePhone'],
                         msg='servicePhone错误')
        self.assertEqual(response['cwc']['cw']['cashLeastCost'],
                         self.expected_result['cashLeastCost'],
                         msg='cashReduceCost错误')
        self.assertEqual(response['cwc']['cw']['cashReduceCost'],
                         self.expected_result['cashReduceCost'],
                         msg='cashReduceCost错误')
        self.assertEqual(response['cwc']['cw']['discount'],
                         self.expected_result['discount'],
                         msg='discount计算错误')
        self.assertEqual(response['cwc']['channel'],
                         self.expected_result['channel'],
                         msg='channel不为-1')
        self.assertEqual(response['cwc']['branchId'],
                         self.expected_result['branchId'],
                         msg='branchId不为-1')
        self.assertEqual(response['success'],
                         bool(self.expected_result['success']),
                         msg='success不为ture,领取卡券失败')
        self.assertEqual(sku_quantity_new,
                         self.expected_result['skuQuantity'],
                         msg='库存计算错误')