Exemple #1
0
    def test_01(self):
        """
        多单持仓,平仓,53用户下多单与之成交。
        """
        logger.info("用例编号:90-1---多单持仓,部分平仓,追加仓位,全平")
        range_num = 10
        price = 120*100000000
        buy_num = 110*100000000
        first_num = 10*100000000
        add_first_num = 20*100000000
        add_first_price = 110*100000000

        # 平多单
        time.sleep(1)
        buy_resp = self.session.post(url=base+sda_order_create_url, data=get_sda_order_create_param(
            sda_id=sda_id, order_type=平多, order_price_type=限价, order_price=price, order_num=first_num
        ))
        logger.info("接口:{0}----返回信息:{1}".format(sda_order_create_url, buy_resp.json()))

        # 53用户下多单。
        # time.sleep(1)
        buy_53_resp = self.session_53.post(url=base+sda_order_create_url,data=get_sda_order_create_param(
            sda_id=sda_id, order_type=多单, order_price_type=限价, order_price=price, order_num=first_num
        ))
        logger.info("接口:{0}---返回信息:{1}".format(sda_order_create_url, buy_53_resp.json()))

        # 第一次追仓
        # time.sleep(2)
        first_add_buy_resp = self.session.post(url=base+sda_order_create_url, data=get_sda_order_create_param(
            sda_id=sda_id, order_type=多单, order_price_type=限价, order_price=add_first_price, order_num=add_first_num
        ))
        logger.info("接口:{0}---返回信息:{1}".format(sda_order_create_url, first_add_buy_resp.json()))

        # time.sleep(1)
        # 54用户下空单
        resp_54 = self.session_54.post(url=base+sda_order_create_url, data=get_sda_order_create_param(
            sda_id=sda_id, order_type=空单, order_price_type=限价, order_price=add_first_price, order_num=add_first_num
        ))
        logger.info("接口:{0}---返回信息:{1}".format(sda_order_create_url, resp_54.json()))

        # time.sleep(3)

        # 限价全平
        time.sleep(1)
        second_buy_resp = self.session.post(url=base+sda_order_create_url, data=get_sda_order_create_param(
            sda_id=sda_id, order_type=平多, order_price_type=限价, order_price=price, order_num=buy_num
        ))
        second_buy_sync_id = JMESPathExtractor().extract(query="syncLockKey", body=second_buy_resp.text)
        logger.info("接口:{0}---返回信息:{1}".format(sda_order_create_url, second_buy_resp.json()))

        # 53用户下单成交

        second_sell_resp = self.session_53.post(url=base+sda_order_create_url, data=get_sda_order_create_param(
            sda_id=sda_id, order_type=多单, order_price_type=限价, order_price=price, order_num=buy_num
        ))
        second_sell_sync_id = JMESPathExtractor().extract(query="syncLockKey", body=second_sell_resp.text)
        logger.info("接口:{0}---返回信息:{1}".format(sda_order_create_url, second_sell_resp.json()))

        after_53_info_dict = account_info_sync(sync_id=second_sell_sync_id, user=self.user_53, session=self.session_53, sda_id=sda_id)
        after_53_account_balance = after_53_info_dict["balance"]
        # time.sleep(3)
        after_info_dict = account_info_sync(sync_id=second_buy_sync_id, user=self.buyer, session=self.session, sda_id=sda_id)
        after_account_balance = after_info_dict["balance"]

        flag_51 = assert_one(int(after_account_balance), 10000239216002299)
        self.assertTrue(flag_51)
Exemple #2
0
    def test_01(self):
        """
        正常访问资金划转接口,验证接口状态、status、msg
        """
        amount = 100000000
        logger.info("用例编号:2-1---资金划转接口测试类,正常访问资金划转接口,验证接口状态、status、msg")
        ConnectMysql(_type=mysql_type).update_balance_value(
            user_mail=self.buyer,
            currency_id=currency_id,
            balance_value=90000000000)

        # 转入前查询bb账户余额
        before_bb_account_resp = self.session.post(
            url=base + get_user_balance_servlet_url,
            data=get_user_balance_servlet_param(user=self.buyer,
                                                currency_id=currency_id))
        before_currency_balance = JMESPathExtractor().extract(
            query="OBJECT.balanceValue", body=before_bb_account_resp.text)
        logger.info("用户:{0}---币ID:{1}---转入前余额:{2}".format(
            self.buyer, currency_id, before_currency_balance))

        # 转入前查询合约账户余额
        info_dict = account_info(user=self.buyer,
                                 session=self.session,
                                 sda_id=sda_id)
        before_account_balance = info_dict["balance"]

        deposit_resp = self.session.post(url=base + sda_account_deposit_url,
                                         data=get_sda_account_deposit_param(
                                             sda_id=sda_id, amount=amount))
        logger.info("用户:{0}---接口:{1}---状态:{2}---正常划转返回信息:{3}".format(
            self.buyer, sda_account_deposit_url, deposit_resp.status_code,
            deposit_resp.json()))
        status = JMESPathExtractor().extract(query="STATUS",
                                             body=deposit_resp.text)
        msg = JMESPathExtractor().extract(query="MSG", body=deposit_resp.text)
        sync_id = JMESPathExtractor().extract(query="syncLockKey",
                                              body=deposit_resp.text)
        print("msg:", type(msg))
        time.sleep(2)
        # 转入后查询合约账户余额
        after_info_dict = account_info_sync(sync_id=sync_id,
                                            user=self.buyer,
                                            session=self.session,
                                            sda_id=sda_id)
        after_account_balance = after_info_dict["balance"]

        # 转入后查询BB账户余额
        # time.sleep(1)
        after_bb_account_resp = self.session.post(
            url=base + get_user_balance_servlet_url,
            data=get_user_balance_servlet_param(self.buyer,
                                                currency_id=currency_id))
        after_currency_balance = JMESPathExtractor().extract(
            query="OBJECT.balanceValue", body=after_bb_account_resp.text)
        logger.info("用户:{0}--币ID:{1}--转入后余额:{2}".format(
            self.buyer, currency_id, after_currency_balance))
        # _object = JMESPathExtractor().extract(query="OBJECT", body=deposit_resp.text)
        print("before account balance", before_account_balance)
        print("amount:", amount)
        print("after account balance:", after_account_balance)
        flag = assert_list([200, "0"], [deposit_resp.status_code, status])
        flag_1 = assert_one(
            int(before_currency_balance) - int(amount),
            int(after_currency_balance))
        flag_2 = assert_one(
            int(before_account_balance) + int(amount),
            int(after_account_balance))
        self.assertListEqual([True, True, True], [flag, flag_1, flag_2])
Exemple #3
0
    def test_01(self):
        """
        限价多单持仓成功,下限价多单委托,验证余额,委托状态
        """
        logger.info("用例编号:116-1---多单持仓成功,下限价多单50倍杠杆委托,下限价空单成交,验证余额,委托状态")
        range_num = 5
        # price = 100000000
        buy_num = 100000000
        sell_num = buy_num * range_num
        lever = 50

        # 查询当前股价
        stock_price_dict = market_info_get(user=self.buyer,
                                           session=self.session,
                                           sda_id=sda_id)
        now_stock_price = stock_price_dict["stockPrice"]

        deal_price = int(int(now_stock_price) * 0.95)

        # 下委托前查询可用余额
        info_dict = account_info(user=self.buyer,
                                 session=self.session,
                                 sda_id=sda_id,
                                 price=1000000000)
        before_balance = info_dict["balance"]

        for i in range(range_num):
            # 下限价委托
            buy_order_resp = self.session.post(url=base + sda_order_create_url,
                                               data=get_sda_order_create_param(
                                                   sda_id=sda_id,
                                                   order_type=多单,
                                                   order_price_type=限价,
                                                   lever=lever,
                                                   order_price=deal_price,
                                                   order_num=buy_num,
                                               ))
            # time.sleep(0.1)
            logger.info("接口:{0}---返回信息:{1}".format(sda_order_create_url,
                                                   buy_order_resp.json()))

        sell_order_resp = self.session_54.post(url=base + sda_order_create_url,
                                               data=get_sda_order_create_param(
                                                   sda_id=sda_id,
                                                   order_type=空单,
                                                   order_price_type=限价,
                                                   lever=lever,
                                                   order_price=deal_price,
                                                   order_num=sell_num))
        sync_id = JMESPathExtractor().extract(query="syncLockKey",
                                              body=sell_order_resp.text)
        logger.info("接口:{0}---返回信息:{1}".format(sda_order_create_url,
                                               sell_order_resp.json()))

        # 下委托后查询可用余额
        # time.sleep(2)
        after_info_dict = account_info_sync(sync_id=sync_id,
                                            user=self.buyer,
                                            session=self.session,
                                            sda_id=sda_id,
                                            price=1000000000)
        after_balance = after_info_dict["balance"]

        flag = assert_one(
            int(before_balance),
            int(after_balance) +
            int(sell_num * deal_price / lever / 100000000))
        self.assertTrue(flag)
Exemple #4
0
    def test_02(self):
        """
        空单持仓中,限价全平,多个对应委托,成交其中部分委托,验证委托状态、用户余额、手续费
        """
        logger.info("用例编号:66-2---空单持仓中,限价全平,多个对应委托,成交其中部分委托,验证委托状态、用户余额、手续费")

        range_num = 10
        price = 20 * 100000000
        buy_num = 10 * 100000000
        sell_num = 2 * 100000000

        # 平空单
        time.sleep(0.5)
        sell_resp = self.sell_session.post(url=base + sda_order_create_url,
                                           data=get_sda_order_create_param(
                                               sda_id=sda_id,
                                               order_type=平空,
                                               order_price_type=限价,
                                               order_price=price,
                                               order_num=buy_num))
        sell_sync_id = JMESPathExtractor().extract(query="syncLockKey",
                                                   body=sell_resp.text)
        logger.info("接口:{0}----返回信息:{1}".format(sda_order_create_url,
                                                sell_resp.json()))
        # time.sleep(2)

        sync_53_id = None
        for i in range(range_num):
            # 53用户下多单。
            # time.sleep(1)
            buy_53_resp = self.session_53.post(url=base + sda_order_create_url,
                                               data=get_sda_order_create_param(
                                                   sda_id=sda_id,
                                                   order_type=空单,
                                                   order_price_type=限价,
                                                   order_price=price,
                                                   order_num=sell_num))
            sync_53_id = JMESPathExtractor().extract(query="syncLockKey",
                                                     body=buy_53_resp.text)
            logger.info("接口:{0}---返回信息:{1}".format(sda_order_create_url,
                                                   buy_53_resp.json()))

        # time.sleep(2)

        after_53_info_dict = account_info_sync(sync_id=sync_53_id,
                                               user=self.user_53,
                                               session=self.session_53,
                                               sda_id=sda_id)
        after_53_account_balance = after_53_info_dict["balance"]

        after_info_dict = account_info_sync(sync_id=sell_sync_id,
                                            user=self.seller,
                                            session=self.sell_session,
                                            sda_id=sda_id)
        after_account_balance = after_info_dict["balance"]

        flag_51 = assert_one(int(after_account_balance), 9999997802034237)
        flag_53 = assert_one(
            self.sda_balance - int(price * sell_num * 10 / 100000000),
            int(after_53_account_balance))
        self.assertListEqual([True, True], [flag_51, flag_53])
Exemple #5
0
    def test_01(self):
        """
        多单,验证合约状态、余额。
        """
        logger.info("用例编号:20-1---限价多单,验证合约、用户余额。")
        deal_price = 100000000
        deal_num = 100000000
        # 更新此合约ID下的所有合约状态为2
        ConnectMysql(_type=mysql_type).sda_clear_open_empty_close_multi_order(
            user_id=self.user_id, contract_id=sda_id, status=2)
        ConnectMysql(_type=mysql_type).sda_clear_open_multi_close_open_order(
            user_id=self.user_id, contract_id=sda_id, status=2)
        ConnectRedis(_type=redis_type).sda_clear_order(sda_id=sda_id)
        ConnectRedis(_type=redis_type,
                     db=4).sda_clear_user_balance(user_id=self.user_id,
                                                  keys=sda_id)
        ConnectMysql(_type=mysql_type).sda_update_user_balance(
            user_id=self.user_id, sda_id=sda_id, sda_balance=990000000000)

        # 查询当前合约的unit
        stock_price_dict = market_info_get(user=self.buyer,
                                           session=self.session,
                                           sda_id=sda_id)
        # now_stock_price = int(stock_price_dict["stockPrice"])
        stock_unit = int(stock_price_dict["tradeUnit"])
        # print("now stock price", now_stock_price)

        # 下单前查询两个用户的余额
        account_dict = account_info(user=self.buyer,
                                    session=self.session,
                                    sda_id=sda_id)
        buy_balance = account_dict["balance"]

        buy_resp = self.session.post(url=base + sda_order_create_url,
                                     data=get_sda_order_create_param(
                                         sda_id=sda_id,
                                         order_type=order_type.多单,
                                         order_price_type=order_type.限价,
                                         order_price=deal_price,
                                         order_num=deal_num))
        buy_order_id = JMESPathExtractor().extract(query="OBJECT.orderId",
                                                   body=buy_resp.text)
        sync_id = JMESPathExtractor().extract(query="syncLockKey",
                                              body=buy_resp.text)
        logger.info("用户:{0}--接口:{1}--状态:{2}--类型:多单--返回信息:{3}".format(
            self.buyer, sda_order_create_url, buy_resp.status_code,
            buy_resp.json()))

        # 计算委托价值

        stock_value = int(
            stockValue(price=deal_price, count=deal_num, unit=stock_unit))
        print("stock_value", stock_value)

        # 查询当前委托

        order_get_open_resp = self.session.post(
            url=base + sda_order_get_open_url,
            data=get_sda_order_get_open_param(sda_id=sda_id))
        get_order_id = JMESPathExtractor().extract(
            query="LIST[0].orderId", body=order_get_open_resp.text)
        order_num = JMESPathExtractor().extract(query="LIST[0].orderQuantity",
                                                body=order_get_open_resp.text)
        order_price = JMESPathExtractor().extract(
            query="LIST[0].orderPrice", body=order_get_open_resp.text)
        total_price = int(JMESPathExtractor().extract(
            query="LIST[0].totalPrice", body=order_get_open_resp.text))

        order_flag = assert_list(
            [buy_order_id, deal_price, deal_num],
            [get_order_id, int(order_price),
             int(order_num)])
        total_price_flag = assert_one(stock_value, total_price)

        self.assertTrue(total_price_flag)
        self.assertTrue(order_flag)

        after_account_dict = account_info_sync(sync_id=sync_id,
                                               user=self.buyer,
                                               session=self.session,
                                               sda_id=sda_id)
        after_account_balance = after_account_dict["balance"]

        flag = assert_one(int(buy_balance),
                          int(after_account_balance) + deal_num)
        self.assertTrue(flag)
Exemple #6
0
    def test_02(self):
        """
        限价空单持仓成功,下空单委托
        """
        logger.info("用例编号:116-2---空单持仓成功,下限价多单,下市价空单委托100倍杠杆,完全成交,验证余额")
        range_num = 5
        sell_num = 1000000000
        buy_num = sell_num
        lever = 100

        # 查询当前股价
        stock_price_dict = market_info_get(user=self.buyer,
                                           session=self.session,
                                           sda_id=sda_id)
        now_stock_price = stock_price_dict["stockPrice"]

        price = int(int(now_stock_price) * 0.95)

        # 下委托前查询可用余额
        info_dict = account_info(user=self.seller,
                                 session=self.sell_session,
                                 sda_id=sda_id,
                                 price=1000000000)
        before_balance = info_dict["balance"]

        buy_order_resp = self.session_53.post(url=base + sda_order_create_url,
                                              data=get_sda_order_create_param(
                                                  sda_id=sda_id,
                                                  order_type=多单,
                                                  order_price_type=限价,
                                                  order_price=price,
                                                  order_num=buy_num))
        logger.info("接口:{0}---返回信息:{1}".format(sda_order_create_url,
                                               buy_order_resp.json()))

        sell_order_resp = self.sell_session.post(
            url=base + sda_order_create_url,
            data=get_sda_order_create_param(sda_id=sda_id,
                                            order_type=空单,
                                            order_price_type=市价,
                                            lever=lever,
                                            order_num=sell_num))
        # time.sleep(0.1)
        logger.info("接口:{0}----返回信息:{1}".format(sda_order_create_url,
                                                sell_order_resp.json()))
        sync_id = JMESPathExtractor().extract(query="syncLockKey",
                                              body=sell_order_resp.text)

        # 下委托后查询可用余额
        # time.sleep(3)
        after_info_dict = account_info_sync(sync_id=sync_id,
                                            user=self.seller,
                                            session=self.sell_session,
                                            sda_id=sda_id,
                                            price=1000000000)
        after_balance = after_info_dict["balance"]

        flag = assert_one(
            int(before_balance),
            int(after_balance) + buy_num * price / lever / 100000000)
        self.assertTrue(flag)
Exemple #7
0
    def test_02(self):
        """
        空单,验证合约状态、余额。
        """
        logger.info("用例编号:20-2---限价空单,验证合约状态、余额。")

        # 查询当前股价
        stock_price_dict = market_info_get(user=self.buyer,
                                           session=self.session,
                                           sda_id=sda_id)
        now_stock_price = stock_price_dict["stockPrice"]

        price = int(int(now_stock_price) * 0.95)

        deal_num = 100000000
        # 更新此合约ID下的所有合约状态为3
        ConnectMysql(_type=mysql_type).sda_clear_open_empty_close_multi_order(
            user_id=self.user_id, contract_id=sda_id, status=2)
        ConnectMysql(_type=mysql_type).sda_clear_open_multi_close_open_order(
            user_id=self.user_id, contract_id=sda_id, status=2)
        ConnectRedis(_type=redis_type).sda_clear_order(sda_id=sda_id)
        ConnectRedis(_type=redis_type,
                     db=4).sda_clear_user_balance(user_id=self.user_id,
                                                  keys=sda_id)
        ConnectMysql(_type=mysql_type).sda_update_user_balance(
            user_id=self.user_id, sda_id=sda_id, sda_balance=990000000000)

        # 下单前查询两个用户的余额
        account_dict = account_info(user=self.buyer,
                                    session=self.session,
                                    sda_id=sda_id)
        buy_balance = account_dict["balance"]

        # 下空单
        buy_resp = self.session.post(url=base + sda_order_create_url,
                                     data=get_sda_order_create_param(
                                         sda_id=sda_id,
                                         order_type=order_type.空单,
                                         order_price_type=order_type.限价,
                                         order_price=price,
                                         order_num=deal_num))
        buy_order_id = JMESPathExtractor().extract(query="OBJECT.orderId",
                                                   body=buy_resp.text)
        sync_id = JMESPathExtractor().extract(query="syncLockKey",
                                              body=buy_resp.text)
        logger.info("用户:{0}--接口:{1}--状态:{2}--类型:空单--返回信息:{3}".format(
            self.buyer, sda_order_create_url, buy_resp.status_code,
            buy_resp.json()))
        # 查询当前委托
        order_get_open_resp = self.session.post(
            url=base + sda_order_get_open_url,
            data=get_sda_order_get_open_param(sda_id=sda_id,
                                              order_id=buy_order_id))

        get_order_id = JMESPathExtractor().extract(
            query="LIST[0].orderId", body=order_get_open_resp.text)
        order_num = JMESPathExtractor().extract(query="LIST[0].orderQuantity",
                                                body=order_get_open_resp.text)
        order_price = JMESPathExtractor().extract(
            query="LIST[0].orderPrice", body=order_get_open_resp.text)

        # 查询用户余额,然后判断下单前后的用户余额
        after_account_dict = account_info_sync(sync_id=sync_id,
                                               user=self.buyer,
                                               session=self.session,
                                               sda_id=sda_id)
        after_account_balance = after_account_dict["balance"]

        flag = assert_one(
            int(buy_balance),
            int(after_account_balance) + deal_num * price / 100000000)
        self.assertTrue(flag)
Exemple #8
0
    def test_01(self):
        """
        限价多单委托,正常下单。
        """
        logger.info("用例编号:6-1---限价多单委托,正常下单。")
        price = 100000000
        num = 100000000
        stock_price_dict = market_info_get(user=self.buyer,
                                           session=self.session,
                                           sda_id=sda_id)
        now_stock_price = int(stock_price_dict["stockPrice"])
        stock_unit = int(stock_price_dict["tradeUnit"])

        ConnectMysql(_type=mysql_type).sda_clear_open_empty_close_multi_order(
            user_id=self.user_id, contract_id=sda_id, status=2)
        ConnectMysql(_type=mysql_type).sda_clear_open_multi_close_open_order(
            user_id=self.user_id, contract_id=sda_id, status=2)
        ConnectRedis(_type=redis_type).sda_clear_order(sda_id=sda_id)
        ConnectRedis(_type=redis_type,
                     db=4).sda_clear_user_balance(user_id=self.user_id,
                                                  keys=sda_id)
        ConnectMysql(_type=mysql_type).sda_update_user_balance(
            user_id=self.user_id, sda_id=sda_id, sda_balance=990000000000)

        # 查询可用余额
        info_dict = account_info(user=self.buyer,
                                 session=self.session,
                                 sda_id=sda_id,
                                 price=1000000000)
        before_balance = info_dict["balance"]

        # 下限价委托
        order_resp = self.session.post(url=base + sda_order_create_url,
                                       data=get_sda_order_create_param(
                                           sda_id=sda_id,
                                           order_type=多单,
                                           order_price_type=限价,
                                           order_price=price,
                                           order_num=num,
                                       ))
        logger.info("下单:{}".format(order_resp.text))
        msg = JMESPathExtractor().extract(query="MSG", body=order_resp.text)
        status = JMESPathExtractor().extract(query="STATUS",
                                             body=order_resp.text)
        order_id = JMESPathExtractor().extract(query="OBJECT.orderId",
                                               body=order_resp.text)
        sync_id = JMESPathExtractor().extract(query="syncLockKey",
                                              body=order_resp.text)

        # 查询当前委托
        # time.sleep(1)
        get_open_dict = query_order_get_open(user=self.buyer,
                                             session=self.session,
                                             order_id=order_id)
        order_quantity = get_open_dict["orderQuantity"]  # 委托数量
        order_price = get_open_dict["orderPrice"]  # 委托价格
        order_status = get_open_dict["orderStatus"]  # 委托状态

        # 查询下委托后的可用余额
        time.sleep(5)
        after_info_dict = account_info_sync(sync_id=sync_id,
                                            user=self.buyer,
                                            session=self.session,
                                            sda_id=sda_id,
                                            price=1000000000)
        after_balance = after_info_dict["balance"]

        employ_balance = employBalance(price=price,
                                       count=num,
                                       unit=stock_unit,
                                       lever=1)

        flag_one = assert_one(int(before_balance),
                              int(after_balance) + int(employ_balance))
        flag_two = assert_list(
            [int(order_quantity),
             int(order_price), order_status], [num, price, "0"])
        flag_three = assert_list([200, "SUCCESS", "0"],
                                 [order_resp.status_code, msg, status])
        self.assertListEqual([True, True, True],
                             [flag_one, flag_two, flag_three])
Exemple #9
0
    def test_02(self):
        """
        限价空单,下单数量小于可用余额数量,验证下单状态。
        """
        logger.info("用例编号:22-2---限价空单,下单数量小于可用余额数量,验证下单状态。")
        sda_balance = 9000000000000
        num = sda_balance + 100000000
        ConnectMysql(_type=mysql_type).sda_clear_open_empty_close_multi_order(
            user_id=self.user_id, contract_id=sda_id, status=2)
        ConnectMysql(_type=mysql_type).sda_clear_open_multi_close_open_order(
            user_id=self.user_id, contract_id=sda_id, status=2)
        ConnectRedis(_type=redis_type).sda_clear_order(sda_id=sda_id)
        ConnectRedis(_type=redis_type,
                     db=4).sda_clear_user_balance(user_id=self.user_id,
                                                  keys=sda_id)
        ConnectMysql(_type=mysql_type).sda_update_user_balance(
            user_id=self.user_id, sda_id=sda_id, sda_balance=sda_balance)

        # 查询当前股价
        stock_price_dict = market_info_get(user=self.buyer,
                                           session=self.session,
                                           sda_id=sda_id)
        now_stock_price = stock_price_dict["stockPrice"]

        price = int(int(now_stock_price) * 0.95)

        # 查询可用余额
        info_dict = account_info(user=self.buyer,
                                 session=self.session,
                                 sda_id=sda_id)
        before_balance = info_dict["balance"]

        # 下限价委托
        order_resp = self.session.post(url=base + sda_order_create_url,
                                       data=get_sda_order_create_param(
                                           sda_id=sda_id,
                                           order_type=空单,
                                           order_price_type=限价,
                                           order_price=price,
                                           order_num=num,
                                       ))
        msg = JMESPathExtractor().extract(query="MSG", body=order_resp.text)
        status = JMESPathExtractor().extract(query="STATUS",
                                             body=order_resp.text)
        sync_id = JMESPathExtractor().extract(query="syncLockKey",
                                              body=order_resp.text)
        # order_id = JMESPathExtractor().extract(query="OBJECT.orderId", body=order_resp.text)

        # 查询当前委托
        # get_open_dict = query_order_get_open(user=self.buyer, session=self.session, order_id=order_id)
        # order_quantity = get_open_dict["orderQuantity"]  # 委托数量
        # order_price = get_open_dict["orderPrice"]  # 委托价格
        # order_status = get_open_dict["orderStatus"]  # 委托状态

        # 查询下委托后的可用余额
        after_info_dict = account_info_sync(sync_id=sync_id,
                                            user=self.buyer,
                                            session=self.session,
                                            sda_id=sda_id)
        after_balance = after_info_dict["balance"]

        flag_one = assert_one(int(before_balance), int(after_balance))
        flag_three = assert_list([200, "该订单将会触发您所持仓位的强平", "1"],
                                 [order_resp.status_code, msg, status])
        self.assertListEqual([True, True], [flag_one, flag_three])
Exemple #10
0
    def test_03(self):
        """
        限价空单1单,市价多单1单,多单部分成交,空单完全成交,验证合约状态、用户余额
        """
        logger.info("用例编号:45-3---限价空单1单,市价多单1单,多单部分成交,空单完全成交,验证合约状态、用户余额")
        sell_num = 100000000
        buy_num = 200000000

        # 查询当前股价
        stock_price_dict = market_info_get(user=self.buyer,
                                           session=self.session,
                                           sda_id=sda_id)
        now_stock_price = stock_price_dict["stockPrice"]

        price = int(int(now_stock_price) * 0.95)

        # 下一单多单、空单,部分成交
        buy_resp = self.session.post(url=base + sda_order_create_url,
                                     data=get_sda_order_create_param(
                                         sda_id=sda_id,
                                         order_type=空单,
                                         order_price_type=限价,
                                         order_price=price,
                                         order_num=sell_num))

        logger.info("用户:{0}--接口:{1}--状态:{2}--类型:多单--返回信息:{3}".format(
            self.buyer, sda_order_create_url, buy_resp.status_code,
            buy_resp.json()))
        # time.sleep(3)
        sell_resp = self.sell_session.post(url=base + sda_order_create_url,
                                           data=get_sda_order_create_param(
                                               sda_id=sda_id,
                                               order_type=多单,
                                               order_price_type=市价,
                                               order_price=price,
                                               order_num=buy_num))
        sell_order_id = JMESPathExtractor().extract(query="OBJECT.orderId",
                                                    body=sell_resp.text)
        sync_id = JMESPathExtractor().extract(query="syncLockKey",
                                              body=sell_resp.text)
        logger.info("用户:{0}--接口:{1}--状态:{2}--类型:空单--返回信息:{3}".format(
            self.seller, sda_order_create_url, sell_resp.status_code,
            sell_resp.json()))

        # time.sleep(2)
        info_dict = account_info_sync(sync_id=sync_id,
                                      user=self.seller,
                                      session=self.sell_session,
                                      sda_id=sda_id)
        after_sell_balance = info_dict["balance"]

        buy_info_dict = account_info_sync(sync_id=sync_id,
                                          user=self.buyer,
                                          session=self.session,
                                          sda_id=sda_id)
        after_buy_balance = buy_info_dict["balance"]
        # 计算保证金
        # buy_currency_balance = make_currency_balance(num=deal_num, price=deal_price)
        # sell_currency_balance = make_currency_balance(num=deal_num, price=deal_price)
        # 检验持仓均价,持仓量,保证金
        sell_flag = assert_one(
            int(self.sda_balance - sell_num * price / 100000000),
            int(after_sell_balance))
        buy_flag = assert_one(
            int(self.sda_balance - sell_num * price / 100000000),
            int(after_buy_balance))
        self.assertListEqual([True, True], [sell_flag, buy_flag])
Exemple #11
0
    def test_01(self):
        """
        连续下N个多单,连续撤单,检查委托状态、用户余额
        """
        logger.info("用例编号:31-1---连续下N个多单,连续撤单,检查委托状态、用户余额")
        ConnectMysql(_type=mysql_type).sda_clear_open_multi_close_open_order(
            user_id=self.user_id, contract_id=sda_id, status=2)
        ConnectMysql(_type=mysql_type).sda_clear_open_empty_close_multi_order(
            user_id=self.user_id, contract_id=sda_id, status=2)
        ConnectRedis(_type=redis_type).sda_clear_order(sda_id=sda_id)
        ConnectRedis(_type=redis_type,
                     db=4).sda_clear_user_balance(user_id=self.user_id,
                                                  keys=sda_id)
        ConnectMysql(_type=mysql_type).sda_update_user_balance(
            user_id=self.user_id, sda_id=sda_id, sda_balance=99000000000000)

        deal_price = 100000000
        deal_num = 100000000

        # 下委托前查询可用余额
        info_dict = account_info(user=self.buyer,
                                 session=self.session,
                                 sda_id=sda_id,
                                 price=1000000000)
        before_balance = info_dict["balance"]
        cancel_num = None
        sync_id = None
        for i in range(1000):
            # 下多单限价
            cancel_num = i
            buy_resp = self.session.post(url=base + sda_order_create_url,
                                         data=get_sda_order_create_param(
                                             sda_id=sda_id,
                                             order_type=order_type.多单,
                                             order_price_type=order_type.限价,
                                             order_price=deal_price,
                                             order_num=deal_num))
            sync_id = JMESPathExtractor().extract(query="syncLockKey",
                                                  body=buy_resp.text)
            buy_order_id = JMESPathExtractor().extract(query="OBJECT.orderId",
                                                       body=buy_resp.text)
            logger.info("用户:{0}--接口:{1}--状态:{2}--类型:多单--返回信息:{3}".format(
                self.buyer, sda_order_create_url, buy_resp.status_code,
                buy_resp.json()))

            # 撤单
            # time.sleep(1)
            cancel_resp = self.session.post(url=base + sda_order_cancel_url,
                                            data=get_sda_order_cancel_param(
                                                sda_id=sda_id,
                                                order_id=buy_order_id,
                                                order_type=多单))
            logger.info("撤单接口状态:{0}---返回信息:{1}".format(cancel_resp.status_code,
                                                       cancel_resp.json()))
            logger.info("撤单次数:{}".format(i))
            # time.sleep(1)

        # 下委托后查询可用余额
        time.sleep(2)
        after_info_dict = account_info_sync(sync_id=sync_id,
                                            user=self.buyer,
                                            session=self.session,
                                            sda_id=sda_id,
                                            price=1000000000)
        after_balance = after_info_dict["balance"]

        logger.info("撤单次数:{}".format(cancel_num))

        available_margin_flag = assert_one(int(before_balance),
                                           int(after_balance))
        self.assertTrue(available_margin_flag)