class GetUserEnergyTest(unittest.TestCase):
    def setUp(self):
        print 'start run GetUserEnergy test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.account_id = 100861

    def tearDown(self):
        print 'GetUserEnergy test complete.....close socket'

    def test_get_energy_success(self):
        """
        获取玩家体力值--初始体力50个\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id = CoRand.get_rand_int(100001)
        res = self.ar_con.login(account_id, "im")
        res_data = json.loads(res)
        user_id = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)

        res = self.ar_con.get_energy()
        res_data = json.loads(res)

        assert_that(res_data, has_key("pp"), "no pp response...")
        assert_that(res_data["pp"], equal_to(50), "response pp mismatch...")
        assert_that(res_data, has_key("last_pp_regain"), "no last_pp_regain response...")
        assert_that(res_data["last_pp_regain"], equal_to(0), "response last_pp_regain mismatch...")

    def test_get_energy_after(self):
        """
        获取玩家体力值--抽奖后扣除体力\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id = CoRand.get_rand_int(100001)
        res = self.ar_con.login(account_id, "im")
        res_data = json.loads(res)
        user_id = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)
        res = self.ar_con.draw_lottery()
        time_full = int(time.time())
        res_data = json.loads(res)
        time.sleep(1)

        if res_data["item"] == 102:
            res = self.ar_con.get_energy()
            res_data = json.loads(res)
            assert_that(res_data, has_key("pp"), "no pp response...")
            assert_that(res_data["pp"], equal_to(59), "pp mismatching...")
            assert_that(res_data, has_key("last_pp_regain"), "no last_pp_regain response...")
            assert_that(res_data["last_pp_regain"], equal_to(0), "response last_pp_regain mismatch...")
        else:
            res = self.ar_con.get_energy()
            res_data = json.loads(res)
            time_not_full = int(time.time())
            assert_that(res_data, has_key("pp"), "no pp response...")
            assert_that(res_data["pp"], equal_to(49), "response pp mismatch...")
            assert_that(res_data, has_key("last_pp_regain"), "no last_pp_regain response...")
            assert_that(abs(res_data["last_pp_regain"] - (time_not_full-time_full)), less_than(1), "response last_pp_regain mismatch...")
예제 #2
0
class DrawLotteryTest(unittest.TestCase):
    def setUp(self):
        print 'start run DrawLottery test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.api_name = "drawLottery"
        self.pet_url = "http://192.168.19.220/v0.1/static/cscommon/avatar/123456789/123456789.jpg"

    def tearDown(self):
        print 'DrawLottery test complete.....close socket'

    def test_draw_lottery_success(self):
        """
        抽奖成功\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id = CoRand.get_rand_int(100001)
        res = self.ar_con.login(account_id, "im")
        res_data = json.loads(res)
        user_id = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)
        res = self.ar_con.get_user_info(user_id)
        res_data = json.loads(res)
        pp = res_data["pp"]

        res = self.ar_con.draw_lottery()
        res_data = json.loads(res)

        assert_that(res_data, has_key("item"), "no item response...")
        assert_that(res_data, has_key("count"), "no count response...")
        assert_that(res_data, has_key("place"), "no place response...")
        assert_that(res_data, has_key("last_pp_regain"), "no last_pp_regain response...")
        if res_data["item"] == 102:
            assert_that(res_data, has_key("pp"), "no pp response...")
            assert_that(res_data["pp"], equal_to(pp+9), "pp mismatching...")
        else:
            assert_that(res_data, has_key("pp"), "no pp response...")
            assert_that(res_data["pp"], equal_to(pp-1), "pp mismatching...")

    def test_draw_lottery_large(self):
        """
        50次抽奖,验证抽奖后物品数值\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id = CoRand.get_rand_int(100001)
        res = self.ar_con.login(account_id, "im")
        res_data = json.loads(res)
        user_id = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)
        res = self.ar_con.get_user_info(user_id)
        res_data = json.loads(res)
        pp_before = res_data["pp"]
        coin = res_data["coin"]
        shield = res_data["shield"]
        scan_advance_count = res_data["scan_advance"]
        scan_normal_count = res_data["scan_normal"]
        pp_add = 0

        for i in range(0, 50):
            res = self.ar_con.draw_lottery()
            res_data = json.loads(res)
            assert_that(res_data, has_key("item"), "no item response...")
            assert_that(res_data, has_key("count"), "no count response...")
            if res_data["item"] == 101:
                count = res_data["count"]
                coin += count
            elif res_data["item"] == 102:
                count = res_data["count"]
                pp_add += count
            elif res_data["item"] == 103:
                count = res_data["count"]
                shield += count
                if shield > 3:
                    pp_add += 1
                    shield = 3
            elif res_data["item"] == 106:
                if 'scan_advance' in res_data.keys():
                    count = res_data["count"]
                    scan_advance_count += count
                    assert_that(res_data, has_key("scan_advance"), "no scan_advance response...")
                else:
                    count = res_data["count"]
                    scan_normal_count += count
                    assert_that(res_data, has_key("scan_normal"), "no scan_normal response...")

        res = self.ar_con.get_user_info(user_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("pp"), "no pp response...")
        assert_that(res_data["pp"], equal_to(pp_before-50+pp_add), "response pp error...")
        assert_that(res_data, has_key("coin"), "no coin response...")
        assert_that(res_data["coin"], equal_to(coin), "response coin error...")
        assert_that(res_data, has_key("scan_advance"), "no scan_advance response...")
        assert_that(res_data["scan_advance"], equal_to(scan_advance_count), "response scan_advance error...")
        assert_that(res_data, has_key("scan_normal"), "no scan_normal response...")
        assert_that(res_data["scan_normal"], equal_to(scan_normal_count), "response scan_normal error...")
        assert_that(res_data, has_key("last_pp_regain"), "no last_pp_regain response...")
        assert_that(res_data, has_key("shield"), "no shield response...")
        assert_that(res_data["shield"], equal_to(shield), "response shield error...")

    def test_draw_lottery_shield_more_than_3(self):
        """
        验证抽到护盾满3个时,再次抽取到护盾,护盾数量不增加,不扣体力\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        self.ar_con.connect_server()
        account_id = CoRand.get_rand_int(100001)
        res = self.ar_con.login(account_id, "im")
        res_data = json.loads(res)
        user_id = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)
        self.sql = ModifySql()
        self.sql.update_user(user_id, "pp", 100)
        self.ar_con.gm_reload_user_data(user_id)
        res = self.ar_con.get_user_info(user_id)
        res_data = json.loads(res)
        pp_before = res_data["pp"]
        coin = res_data["coin"]
        scan_advance_count = res_data["scan_advance"]
        scan_normal_count = res_data["scan_normal"]
        pp_add = 0
        shield_num = 0

        for i in range(0, 100):
            res = self.ar_con.draw_lottery()
            res_data = json.loads(res)
            assert_that(res_data, has_key("item"), "no item response...")
            assert_that(res_data, has_key("count"), "no count response...")
            if res_data["item"] == 101:
                count = res_data["count"]
                coin += count
            elif res_data["item"] == 102:
                count = res_data["count"]
                pp_add += count
            elif res_data["item"] == 106:
                if 'scan_advance' in res_data.keys():
                    count = res_data["count"]
                    scan_advance_count += count
                    assert_that(res_data, has_key("scan_advance"), "no scan_advance response...")
                else:
                    count = res_data["count"]
                    scan_normal_count += count
                    assert_that(res_data, has_key("scan_normal"), "no scan_normal response...")
            elif res_data["item"] == 103:
                count = res_data["count"]
                shield_num += count
                if shield_num > 3:
                    pp_add += 1
                    shield_num = 3
        res = self.ar_con.get_user_info(user_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("pp"), "no pp response...")
        assert_that(res_data["pp"], equal_to(pp_before-100+pp_add), "response pp error...")
        assert_that(res_data, has_key("coin"), "no coin response...")
        assert_that(res_data["coin"], equal_to(coin), "response coin error...")
        assert_that(res_data, has_key("scan_advance"), "no scan_advance response...")
        assert_that(res_data["scan_advance"], equal_to(scan_advance_count), "response scan_advance error...")
        assert_that(res_data, has_key("scan_normal"), "no scan_normal response...")
        assert_that(res_data["scan_normal"], equal_to(scan_normal_count), "response scan_normal error...")
        assert_that(res_data, has_key("last_pp_regain"), "no last_pp_regain response...")
        assert_that(res_data, has_key("shield"), "no shield response...")
        assert_that(res_data["shield"], equal_to(shield_num), "response shield error...")

    def test_draw_lottery_not_enough_energy(self):
        """
        抽奖失败,体力不足\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id = CoRand.get_rand_int(100001)
        res = self.ar_con.login(account_id, "im")
        res_data = json.loads(res)
        user_id = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)
        self.sql = ModifySql()
        self.sql.update_user(user_id, "pp", 0)
        self.ar_con.gm_reload_user_data(user_id)

        res = self.ar_con.draw_lottery()
        res_data = json.loads(res)

        assert_that(res_data, has_key("code"), "no code response...")
        assert_that(res_data, has_key("err_msg"), "no err_msg response...")
        assert_that(res_data["code"], equal_to(EC_NOT_ENOUGH_ENERGY["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_NOT_ENOUGH_ENERGY["err_msg"]), "response msg mismatching...")

    # def test_draw_lottery_reset_timer(self):
    #     """
    #     抽奖,1小时后重置计时器、体力恢复6点\
    #     开发:黄良江(900000)\
    #     测试:林冰晶(791099)
    #     """
    #     user_id = CoRand.get_rand_int(100001)
    #     self.ar_con.login(user_id, "im")
    #     nick_name = CoRand.get_random_word_filter_sensitive(6)
    #     self.ar_con.modify_info(nick_name)
    #     time_before = time.time()
    #     for i in range(0, 30):
    #         self.ar_con.draw_lottery()
    #     res = self.ar_con.get_user_info(user_id)
    #     res_data = json.loads(res)
    #     pp_before = res_data["pp"]
    #     time.sleep(3601)
    #
    #     res = self.ar_con.draw_lottery()
    #     time_after = time.time()
    #     time_interval = int(time_after - time_before)
    #     res_data = json.loads(res)
    #
    #     assert_that(res_data, has_key("item"), "no icon response...")
    #     assert_that(res_data, has_key("last_pp_regain"), "no last_pp_regain response...")
    #     assert_that(res_data["last_pp_regain"], equal_to(time_interval - 3600), "response last_pp_regain error...")
    #     if res_data["item"] == 102:
    #         assert_that(res_data, has_key("pp"), "no nick_name response...")
    #         assert_that(res_data["pp"], equal_to(pp_before+10+5), "pp mismatching...")
    #     else:
    #         assert_that(res_data, has_key("pp"), "no nick_name response...")
    #         assert_that(res_data["pp"], equal_to(pp_before+5), "pp mismatching...")
    #         assert_that(res_data, has_key("last_pp_regain"), "no nick_name response...")

    # def test_draw_lottery_probability(self):
    #     """
    #     抽奖概率统计\
    #     开发:黄良江(900000)\
    #     测试:林冰晶(791099)
    #     """
    #     star_coin_num = 0.0
    #     coin_num = 0.0
    #     energy_num = 0.0
    #     shield_num = 0.0
    #     attack_num = 0.0
    #     steal_num = 0.0
    #     scan_celebrity_num = 0.0
    #     scan_unlock_num = 0.0
    #     user_num = 100
    #     draw_lottery_num = user_num*50
    #     for a in range(0, user_num):
    #         self.ar_con.connect_server()
    #         account_id = CoRand.get_rand_int(100001)
    #         res = self.ar_con.login(account_id, "im")
    #     res_data = json.loads(res)
    #     user_id = res_data["user_id"]
    #         nick_name = CoRand.get_random_word_filter_sensitive(6)
    #         self.ar_con.modify_info(nick_name)
    #         for i in range(0, 50):
    #             res = self.ar_con.draw_lottery()
    #             res_data = json.loads(res)
    #             assert_that(res_data, has_key("item"), "no item response...")
    #             if res_data["item"] == 100:
    #                 star_coin_num += 1
    #             elif res_data["item"] == 101:
    #                 coin_num += 1
    #             elif res_data["item"] == 102:
    #                 energy_num += 1
    #             elif res_data["item"] == 103:
    #                 shield_num += 1
    #             elif res_data["item"] == 104:
    #                 attack_num += 1
    #             elif res_data["item"] == 105:
    #                 steal_num += 1
    #             elif res_data["item"] == 106:
    #                 scan_celebrity_num += 1
    #             elif res_data["item"] == 107:
    #                 scan_unlock_num += 1
    #             else:
    #                 pass
    #     print "总计抽奖次数:" + str(draw_lottery_num)
    #     print "抽取星数金币概率:" + "%.2f%%" % (star_coin_num/draw_lottery_num*100)
    #     print "抽取金币概率:" + "%.2f%%" % (coin_num / draw_lottery_num * 100)
    #     print "抽取能量概率:" + "%.2f%%" % (energy_num / draw_lottery_num * 100)
    #     print "抽取护盾概率:" + "%.2f%%" % (shield_num / draw_lottery_num * 100)
    #     print "抽取攻击概率:" + "%.2f%%" % (attack_num / draw_lottery_num * 100)
    #     print "抽取偷取概率:" + "%.2f%%" % (steal_num / draw_lottery_num * 100)
    #     print "抽取扫描名人概率:" + "%.2f%%" % (scan_celebrity_num / draw_lottery_num * 100)
    #     print "抽取扫描解锁概率:" + "%.2f%%" % (scan_unlock_num / draw_lottery_num * 100)

    def test_draw_lottery_item_100(self):
        """
        验证抽取星数金币\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id = CoRand.get_rand_int(100001)
        res = self.ar_con.login(account_id, "im")
        res_data = json.loads(res)
        user_id = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)
        self.ar_con.pm_set_role_data("coin", 100000000)
        for i in range(0, 3):
            res = self.ar_con.scan_face(self.pet_url, "la", 1)
            res_data = json.loads(res)
            pet_id = res_data["item_id"]
            self.ar_con.capture_pet(pet_id)
            self.ar_con.set_cultivate_pet(pet_id)
            part = 1
            while part != 6:
                for j in range(0, 5):
                    self.ar_con.upgrade_pet_part(part)
                part += 1

        pet_idx = 4
        star_coin_count = 200

        while pet_idx != 31:
            if pet_idx <= 8:
                star_coin_count = 200
            elif pet_idx >= 9 and pet_idx <= 13:
                star_coin_count = 300
            elif pet_idx >= 14 and pet_idx <= 18:
                star_coin_count = 400
            elif pet_idx >= 19 and pet_idx <= 23:
                star_coin_count = 500
            elif pet_idx >= 24 and pet_idx <= 28:
                star_coin_count = 600
            elif pet_idx >= 29 and pet_idx <= 30:
                star_coin_count = 700

            print "升级到第" + str(pet_idx) + "个养成宠,转盘抽中星数金币为当前星级*" + str(star_coin_count) + ":"
            res = self.ar_con.scan_face(self.pet_url, "la", 1)
            res_data = json.loads(res)
            pet_id = res_data["item_id"]
            self.ar_con.capture_pet(pet_id)
            self.ar_con.set_cultivate_pet(pet_id)
            self.sql = ModifySql()
            self.sql.update_user(user_id, "pp", 50)
            self.ar_con.gm_reload_user_data(user_id)

            res = self.ar_con.get_user_info(user_id)
            res_data = json.loads(res)
            coin = res_data["coin"]
            scan_advance_count = res_data["scan_advance"]
            scan_normal_count = res_data["scan_normal"]
            star = res_data["star"]
            shield = res_data["shield"]
            pp_add = 0

            for m in range(0, 50):
                res = self.ar_con.draw_lottery()
                res_data = json.loads(res)
                assert_that(res_data, has_key("item"), "no item response...")
                assert_that(res_data, has_key("count"), "no count response...")
                if res_data["item"] == 101:
                    count = res_data["count"]
                    coin += count
                    assert_that(res_data, has_key("coin"), "no coin response...")
                elif res_data["item"] == 102:
                    count = res_data["count"]
                    pp_add += count
                    print pp_add
                elif res_data["item"] == 103:
                    count = res_data["count"]
                    shield += count
                    if shield > 3:
                        pp_add += 1
                        shield = 3
                    print pp_add
                elif res_data["item"] == 106:
                    if 'scan_advance' in res_data.keys():
                        count = res_data["count"]
                        scan_advance_count += count
                        assert_that(res_data, has_key("scan_advance"), "no scan_advance response...")
                    else:
                        count = res_data["count"]
                        scan_normal_count += count
                        assert_that(res_data, has_key("scan_normal"), "no scan_normal response...")
                elif res_data["item"] == 100:
                    assert_that(res_data["count"], equal_to(star_coin_count))
                    coin += star*star_coin_count
                    assert_that(res_data, has_key("coin"), "no coin response...")

            res = self.ar_con.get_user_info(user_id)
            res_data = json.loads(res)
            assert_that(res_data, has_key("pp"), "no pp response...")
            assert_that(res_data["pp"], equal_to(pp_add), "response pp error...")
            assert_that(res_data, has_key("coin"), "no coin response...")
            assert_that(res_data["coin"], equal_to(coin), "response coin error...")
            assert_that(res_data, has_key("scan_advance"), "no scan_advance response...")
            assert_that(res_data["scan_advance"], equal_to(scan_advance_count), "response scan_advance error...")
            assert_that(res_data, has_key("scan_normal"), "no scan_normal response...")
            assert_that(res_data["scan_normal"], equal_to(scan_normal_count), "response scan_normal error...")
            assert_that(res_data, has_key("last_pp_regain"), "no last_pp_regain response...")
            self.sql = ModifySql()
            self.sql.update_user(user_id, "coin", 1000000000)
            self.ar_con.gm_reload_user_data(user_id)
            part = 1
            while part != 6:
                for j in range(0, 5):
                    self.ar_con.upgrade_pet_part(part)
                part += 1
            pet_idx += 1