class GetRichPlayerListTest(unittest.TestCase):
    def setUp(self):
        print 'start run GetRichPlayerList test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.api_name = "getRichPlayerList"
        self.account_id = 100861
        self.pet_url = "http://192.168.19.220/v0.1/static/cscommon/avatar/123456789/123456789.jpg"

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

    def test_get_rich_player_list_no_steal(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_rich_player_list()
        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_ALLOW_STEAL["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_NOT_ALLOW_STEAL["err_msg"]),
                    "response msg mismatching...")

    def test_get_rich_player_list_success(self):
        """
        获取富豪列表--获取8位玩家,富豪金币>=10w,富豪金币>其余玩家金币>=1w,排除玩家本人\
        开发:黄良江(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, "guidance", 131071)
        self.ar_con.gm_reload_user_data(user_id)
        self.sql = ModifySql()
        self.sql.update_user(user_id, "lottery_type", 105)
        self.ar_con.gm_reload_user_data(user_id)
        res = self.ar_con.get_rich_player_list()
        res_data = json.loads(res)
        assert res_data != []
        user_ids = []
        coins = []
        for i in res_data:
            assert_that(i, has_key("nick_name"), "no nick_name response...")
            assert_that(i, has_key("name"), "no name response...")
            assert_that(i, has_key("icon"), "no icon response...")
            assert_that(i, has_key("has_glass"), "no has_glass response...")
            assert_that(i, has_key("head_status"),
                        "no head_status response...")
            assert_that(i, has_key("head_level"), "no head_level response...")
            assert_that(i, has_key("arm_status"), "no arm_status response...")
            assert_that(i, has_key("arm_level"), "no arm_level response...")
            assert_that(i, has_key("clothes_status"),
                        "no clothes_status response...")
            assert_that(i, has_key("clothes_level"),
                        "no clothes_level response...")
            assert_that(i, has_key("skirt_status"),
                        "no skirt_status response...")
            assert_that(i, has_key("skirt_level"),
                        "no skirt_level response...")
            assert_that(i, has_key("shoes_status"),
                        "no shoes_status response...")
            assert_that(i, has_key("shoes_level"),
                        "no shoes_level response...")
            assert_that(i, has_key("pet_code"), "no pet_code response...")
            assert_that(i, has_key("pet_id"), "no pet_id response...")
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_ids.append(i["user_id"])
            res_info = self.ar_con.get_user_info(i["user_id"])
            res_info_data = json.loads(res_info)
            coins.append(res_info_data["coin"])
            assert_that(res_info_data, has_key("pet_idx"),
                        "no pet_idx response...")
            assert_that(res_info_data["pet_idx"], not_(0),
                        "response pet_idx mismatch...")
        coin_max = max(coins)
        coin_min = min(coins)
        assert_that(coin_max, greater_than(100000),
                    "response coin less than 10w...")
        assert_that(coin_min, greater_than_or_equal_to(10000),
                    "response coin less than 1w...")
        assert user_id not in user_ids
        assert_that(res_data, has_length(4), "response length mismatch...")

    def test_get_rich_player_list_friend_rich(self):
        """
        获取富豪列表--有好友金币>10w,抽取概率好友50%、陌生人50%\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家A:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        res = self.ar_con2.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        pet_id = res_data["item_id"]
        self.ar_con2.capture_pet(pet_id)
        self.ar_con2.set_cultivate_pet(pet_id)
        part = CoRand.get_rand_int(1, 5)
        self.ar_con2.upgrade_pet_part(part)
        print "创建好友玩家B:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "guidance", 131071)
        self.ar_con.gm_reload_user_data(user_id_1)
        self.ar_con.add_friend(user_id_2)
        print "A同意添加好友:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, 1)
        print "B执行50次获取富豪操作:"
        self.ar_con.get_rev()
        friend_num = 0
        rand_num = 0
        for i in range(0, 50):
            user_total_ids = []
            coins = []
            self.sql = ModifySql()
            self.sql.update_user(user_id_1, "lottery_type", 105)
            self.ar_con.gm_reload_user_data(user_id_1)
            res = self.ar_con.get_rich_player_list()
            res_data = json.loads(res)
            for j in res_data:
                assert_that(j, has_key("user_id"), "no user_id response...")
                user_total_ids.append(j["user_id"])
                res_info = self.ar_con.get_user_info(j["user_id"])
                res_info_data = json.loads(res_info)
                coins.append(res_info_data["coin"])
            print user_total_ids
            if user_id_2 in user_total_ids:
                friend_num += 1
            else:
                rand_num += 1
            rich_user_index = coins.index(max(coins))
            rich_user_id = user_total_ids[rich_user_index]
            user_ids = [rich_user_id]
            self.ar_con.catch_player_list(user_ids)
            self.sql = ModifySql()
            self.sql.update_user(user_id_2, "coin", 1000000)
            self.ar_con2.gm_reload_user_data(user_id_2)
        print "转盘50次,抽中好友次数:" + str(friend_num)
        print "转盘50次,抽中随机玩家次数:" + str(rand_num)
        # assert_that(abs(friend_num-rand_num), less_than(10), "draw probability mismatch")

    def test_get_rich_player_list_friend_poor(self):
        """
        获取富豪列表--好友金币<10w,从陌生人中随机抽取\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家A:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "coin", 100)
        self.ar_con2.gm_reload_user_data(user_id_2)
        print "创建好友玩家B:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "guidance", 131071)
        self.ar_con.gm_reload_user_data(user_id_1)
        self.ar_con.add_friend(user_id_2)
        print "A同意添加好友:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, 1)
        print "B获取富豪列表:"
        self.ar_con.get_rev()
        user_ids = []
        for i in range(0, 10):
            self.sql = ModifySql()
            self.sql.update_user(user_id_1, "lottery_type", 105)
            self.ar_con.gm_reload_user_data(user_id_1)
            res = self.ar_con.get_rich_player_list()
            res_data = json.loads(res)
            for j in res_data:
                assert_that(j, has_key("user_id"), "no user_id response...")
                user_ids.append(j["user_id"])
        print user_ids
        assert user_id_2 not in user_ids

    def test_get_rich_player_list_not_catch_rich_third(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, "guidance", 131071)
        self.ar_con.gm_reload_user_data(user_id)
        self.sql = ModifySql()
        self.sql.update_user(user_id, "lottery_type", 105)
        self.ar_con.gm_reload_user_data(user_id)
        print "第一次获取富豪列表"
        res = self.ar_con.get_rich_player_list()
        res_data = json.loads(res)
        user_total_ids = []
        coins = []
        for i in res_data:
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_total_ids.append(i["user_id"])
            res_info = self.ar_con.get_user_info(i["user_id"])
            res_info_data = json.loads(res_info)
            coins.append(res_info_data["coin"])
        #   获取富豪和非富豪的user_id和coin
        rich_user_index_1 = coins.index(max(coins))
        rich_user_id_1 = user_total_ids[rich_user_index_1]
        poor_user_index_1 = coins.index(min(coins))
        poor_user_id_1 = user_total_ids[poor_user_index_1]
        user_ids_1 = [poor_user_id_1]
        if poor_user_id_1 != rich_user_id_1:
            print "第一次获取富豪id是:" + str(rich_user_id_1)
            print "第一次捕捉非富豪:"
            self.ar_con.catch_player_list(user_ids_1)
            print "第二次获取富豪列表:"
            self.sql = ModifySql()
            self.sql.update_user(user_id, "lottery_type", 105)
            self.ar_con.gm_reload_user_data(user_id)
            res = self.ar_con.get_rich_player_list()
            res_data = json.loads(res)
            user_total_ids = []
            coins = []
            for i in res_data:
                assert_that(i, has_key("user_id"), "no user_id response...")
                user_total_ids.append(i["user_id"])
                res_info = self.ar_con.get_user_info(i["user_id"])
                res_info_data = json.loads(res_info)
                coins.append(res_info_data["coin"])
            # 获取富豪和非富豪的user_id和coin
            rich_user_index_2 = coins.index(max(coins))
            rich_user_id_2 = user_total_ids[rich_user_index_2]
            poor_user_index_2 = coins.index(min(coins))
            poor_user_id_2 = user_total_ids[poor_user_index_2]
            user_ids_2 = [poor_user_id_2]
            res = self.ar_con.get_user_info(rich_user_id_1)
            res_data = json.loads(res)
            assert_that(res_data, has_key("coin"), "no coin response...")
            if res_data["coin"] >= 100000:
                assert_that(rich_user_id_2, equal_to(rich_user_id_1),
                            "rich user changed...")
                if poor_user_id_2 != rich_user_id_2:
                    print "第二次获取富豪id是:" + str(rich_user_id_2)
                    print "第二次捕捉非富豪:"
                    self.ar_con.catch_player_list(user_ids_2)
                    print "第三次获取富豪列表:"
                    self.sql = ModifySql()
                    self.sql.update_user(user_id, "lottery_type", 105)
                    self.ar_con.gm_reload_user_data(user_id)
                    res = self.ar_con.get_rich_player_list()
                    res_data = json.loads(res)
                    user_total_ids = []
                    coins = []
                    for i in res_data:
                        assert_that(i, has_key("user_id"),
                                    "no user_id response...")
                        user_total_ids.append(i["user_id"])
                        res_info = self.ar_con.get_user_info(i["user_id"])
                        res_info_data = json.loads(res_info)
                        coins.append(res_info_data["coin"])
                    rich_user_index_3 = coins.index(max(coins))
                    rich_user_id_3 = user_total_ids[rich_user_index_3]
                    poor_user_index_3 = coins.index(min(coins))
                    poor_user_id_3 = user_total_ids[poor_user_index_3]
                    user_ids_3 = [poor_user_id_3]
                    res = self.ar_con.get_user_info(rich_user_id_1)
                    res_data = json.loads(res)
                    assert_that(res_data, has_key("coin"),
                                "no coin response...")
                    if res_data["coin"] >= 100000:
                        assert_that(rich_user_id_3, equal_to(rich_user_id_1),
                                    "rich user changed...")
                        if poor_user_id_3 != rich_user_id_3:
                            print "第三次获取富豪id是:" + str(rich_user_id_3)
                            print "第三次捕捉非富豪:"
                            self.ar_con.catch_player_list(user_ids_3)
                            print "第四次获取富豪列表:"
                            self.sql = ModifySql()
                            self.sql.update_user(user_id, "lottery_type", 105)
                            self.ar_con.gm_reload_user_data(user_id)
                            res = self.ar_con.get_rich_player_list()
                            res_data = json.loads(res)
                            user_total_ids = []
                            coins = []
                            for i in res_data:
                                assert_that(i, has_key("user_id"),
                                            "no user_id response...")
                                user_total_ids.append(i["user_id"])
                                res_info = self.ar_con.get_user_info(
                                    i["user_id"])
                                res_info_data = json.loads(res_info)
                                coins.append(res_info_data["coin"])
                            rich_user_index_4 = coins.index(max(coins))
                            rich_user_id_4 = user_total_ids[rich_user_index_4]
                            print "第四次获取富豪id是:" + str(rich_user_id_4)
                            assert_that(rich_user_id_4, not_(rich_user_id_1),
                                        "rich user not change...")
Пример #2
0
class GetRewardTest(unittest.TestCase):
    def setUp(self):
        print 'start run GetReward test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.api_name = "getReward"
        self.account_id = 100861
        self.pet_url = "http://192.168.19.220/v0.1/static/cscommon/avatar/123456789/123456789.jpg"

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

    def test_get_reward_normal(self):
        """
        获取悬赏令信息:普通悬赏令,被悬赏者被攻击后,剩余悬赏攻击次数-1\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建悬赏令使用者:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_1 = res_data["item_id"]
        self.ar_con.capture_pet(item_id_1)
        self.ar_con.set_cultivate_pet(item_id_1)
        part_1 = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part_1)

        print "创建攻击者玩家:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        res = self.ar_con3.get_user_coin()
        res_data = json.loads(res)
        coin_before = res_data["coin"]
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)
        part_3 = CoRand.get_rand_int(1, 5)
        res = self.ar_con3.upgrade_pet_part(part_3)
        res_data = json.loads(res)
        coin_after = res_data["coin"]
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_1, user_id_1)

        print "悬赏令使用者通缉攻击者:"
        self.ar_con.get_rev()
        self.ar_con.reward_player(0, user_id_3)
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_list"), "no reward_list response...")
        assert_that(res_data["reward_list"][0], has_key("reward_id"), "no reward_id response...")
        reward_id = res_data["reward_list"][0]["reward_id"]
        res = self.ar_con.get_reward(reward_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_id"], equal_to(reward_id), "response reward_id mismatch...")
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_1), "response user_id mismatch...")
        assert_that(res_data, has_key("be_reward_user_id"), "no be_reward_user_id response...")
        assert_that(res_data["be_reward_user_id"], equal_to(user_id_3), "response be_reward_user_id mismatch...")
        assert_that(res_data, has_key("end_time"), "no end_time response...")
        assert_that(res_data, has_key("left_times"), "no left_times response...")
        assert_that(res_data["left_times"], equal_to(5), "response left_times mismatch...")
        assert_that(res_data, has_key("reward_type"), "no left_times response...")
        assert_that(res_data["reward_type"], equal_to(0), "response left_times mismatch...")
        assert_that(res_data, has_key("total_toll"), "no total_toll response...")
        assert_that(res_data["total_toll"], equal_to(0), "response total_toll mismatch...")
        assert_that(res_data, has_key("total_attack"), "no total_attack response...")
        assert_that(res_data["total_attack"], equal_to(0), "response total_attack mismatch...")

        print "悬赏令使用者自己攻击被悬赏者:"
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "guidance", 131071)
        self.ar_con.gm_reload_user_data(user_id_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "lottery_type", 104)
        self.ar_con.gm_reload_user_data(user_id_1)
        self.ar_con.attack_pet(part_3, user_id_3, reward_id)
        self.ar_con.get_rev()
        res = self.ar_con.get_reward(reward_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_id"], equal_to(reward_id), "response reward_id mismatch...")
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_1), "response user_id mismatch...")
        assert_that(res_data, has_key("be_reward_user_id"), "no be_reward_user_id response...")
        assert_that(res_data["be_reward_user_id"], equal_to(user_id_3), "response be_reward_user_id mismatch...")
        assert_that(res_data, has_key("end_time"), "no end_time response...")
        assert_that(res_data, has_key("left_times"), "no left_times response...")
        assert_that(res_data["left_times"], equal_to(4), "response left_times mismatch...")
        assert_that(res_data, has_key("reward_type"), "no left_times response...")
        assert_that(res_data["reward_type"], equal_to(0), "response left_times mismatch...")
        assert_that(res_data, has_key("total_toll"), "no total_toll response...")
        assert_that(res_data["total_toll"], equal_to(int((coin_before-coin_after)*0.5)), "response total_toll mismatch...")
        assert_that(res_data, has_key("total_attack"), "no total_attack response...")
        assert_that(res_data["total_attack"], equal_to(1), "response total_attack mismatch...")

    def test_get_reward_advance(self):
        """
        获取悬赏令信息:高级悬赏令\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建悬赏令使用者:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "guidance", 131071)
        self.ar_con.gm_reload_user_data(user_id_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_1 = res_data["item_id"]
        self.ar_con.capture_pet(item_id_1)
        self.ar_con.set_cultivate_pet(item_id_1)
        part_1 = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part_1)

        print "创建攻击者玩家:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        res = self.ar_con3.get_user_coin()
        res_data = json.loads(res)
        coin_before = res_data["coin"]
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)
        part_3 = CoRand.get_rand_int(1, 5)
        res = self.ar_con3.upgrade_pet_part(part_3)
        res_data = json.loads(res)
        coin_after = res_data["coin"]
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_1, user_id_1)

        print "悬赏令使用者通缉攻击者,并攻击:"
        self.ar_con.get_rev()
        self.ar_con.reward_player(1, user_id_3)
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_list"), "no reward_list response...")
        assert_that(res_data["reward_list"][0], has_key("reward_id"), "no reward_id response...")
        reward_id = res_data["reward_list"][0]["reward_id"]
        self.ar_con.pm_set_role_data("lotteryType", 104)
        self.ar_con.attack_pet(part_3, user_id_3, reward_id)
        self.ar_con.get_rev()
        res = self.ar_con.get_reward(reward_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_id"], equal_to(reward_id), "response reward_id mismatch...")
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_1), "response user_id mismatch...")
        assert_that(res_data, has_key("be_reward_user_id"), "no be_reward_user_id response...")
        assert_that(res_data["be_reward_user_id"], equal_to(user_id_3), "response be_reward_user_id mismatch...")
        assert_that(res_data, has_key("end_time"), "no end_time response...")
        assert_that(res_data, has_key("left_times"), "no left_times response...")
        assert_that(res_data["left_times"], equal_to(9), "response left_times mismatch...")
        assert_that(res_data, has_key("reward_type"), "no left_times response...")
        assert_that(res_data["reward_type"], equal_to(1), "response left_times mismatch...")
        assert_that(res_data, has_key("total_toll"), "no total_toll response...")
        assert_that(res_data["total_toll"], equal_to(int((coin_before - coin_after) * 0.5)),
                    "response total_toll mismatch...")
        assert_that(res_data, has_key("total_attack"), "no total_attack response...")
        assert_that(res_data["total_attack"], equal_to(1), "response total_attack mismatch...")

    def test_get_reward_others(self):
        """
        获取悬赏令信息:获取其他玩家悬赏令信息\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建悬赏令使用者:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_1 = res_data["item_id"]
        self.ar_con.capture_pet(item_id_1)
        self.ar_con.set_cultivate_pet(item_id_1)
        part_1 = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part_1)

        print "创建攻击者玩家:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)
        part_3 = CoRand.get_rand_int(1, 5)
        self.ar_con3.upgrade_pet_part(part_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_1, user_id_1)

        print "悬赏令使用者通缉攻击者:"
        self.ar_con.get_rev()
        self.ar_con.reward_player(1, user_id_3)
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_list"), "no reward_list response...")
        assert_that(res_data["reward_list"][0], has_key("reward_id"), "no reward_id response...")
        reward_id = res_data["reward_list"][0]["reward_id"]

        print "创建其他玩家:"
        account_id_4 = CoRand.get_rand_int(100001)
        uc_id_4 = CoRand.get_rand_int()
        self.ar_con4 = ARControl()
        self.ar_con4.connect_server()
        res = self.ar_con4.login(account_id_4, "im", uc_id_4)
        res_data = json.loads(res)
        user_id_4 = res_data["user_id"]
        nick_name_4 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con4.modify_info(nick_name_4)
        res = self.ar_con4.get_reward(reward_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_id"], equal_to(reward_id), "response reward_id mismatch...")
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_1), "response user_id mismatch...")
        assert_that(res_data, has_key("be_reward_user_id"), "no be_reward_user_id response...")
        assert_that(res_data["be_reward_user_id"], equal_to(user_id_3), "response be_reward_user_id mismatch...")
        assert_that(res_data, has_key("end_time"), "no end_time response...")
        assert_that(res_data, has_key("left_times"), "no left_times response...")
        assert_that(res_data["left_times"], equal_to(10), "response left_times mismatch...")
        assert_that(res_data, has_key("reward_type"), "no left_times response...")
        assert_that(res_data["reward_type"], equal_to(1), "response left_times mismatch...")

    def test_get_reward_error_reward_id(self):
        """
        获取悬赏令信息:错误的reward_id\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        self.ar_con.login(self.account_id, "im")
        reward_id = CoRand.get_rand_int()
        res = self.ar_con.get_reward(reward_id)
        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_INVALID_REQUEST_PARAM["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_INVALID_REQUEST_PARAM["err_msg"]), "response msg mismatching...")

    def test_get_reward_without_params(self):
        """
        获取悬赏令信息:未传参数\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        self.ar_con.login(self.account_id, "im")
        json_body = {}
        res = self.ar_con.get_res(self.api_name, json_body)
        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_INVALID_REQUEST_PARAM["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_INVALID_REQUEST_PARAM["err_msg"]), "response msg mismatching...")

    def test_get_reward_add_reward(self):
        """
        获取悬赏令信息--获取追加悬赏令信息\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "悬赏令使用者登陆:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_1 = res_data["item_id"]
        self.ar_con.capture_pet(item_id_1)
        self.ar_con.set_cultivate_pet(item_id_1)
        part_1 = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part_1)

        print "创建攻击者玩家:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)
        part_3 = CoRand.get_rand_int(1, 5)
        self.ar_con3.upgrade_pet_part(part_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_1, user_id_1)

        print "悬赏令使用者使用普通通缉令通缉攻击者:"
        self.ar_con.get_rev()
        res = self.ar_con.reward_player(0, user_id_3)
        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_SUCCESS["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]), "response msg mismatching...")
        self.ar_con.get_enemy_list()
        print "追加高级悬赏令:"
        self.ar_con.reward_player(1, user_id_3)
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_list"), "no reward_list response...")
        assert_that(res_data["reward_list"][0], has_key("reward_id"), "no reward_id response...")
        reward_id = res_data["reward_list"][0]["reward_id"]
        self.ar_con.evil_rank_list(0)
        # print "悬赏令使用者自己攻击被悬赏者:"
        # self.sql = ModifySql()
        # self.sql.update_user(user_id_1, "lottery_type", 104)
        # self.ar_con.gm_reload_user_data(user_id_1)
        # self.ar_con.attack_pet(part_3, user_id_3, reward_id)
        # self.ar_con.get_rev()
        print"获取悬赏令信息:"
        res = self.ar_con.get_reward(reward_id)
        res_data = json.loads(res)

        assert_that(res_data, has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_id"], equal_to(reward_id), "response reward_id mismatch...")
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_1), "response user_id mismatch...")
        assert_that(res_data, has_key("be_reward_user_id"), "no be_reward_user_id response...")
        assert_that(res_data["be_reward_user_id"], equal_to(user_id_3), "response be_reward_user_id mismatch...")
        assert_that(res_data, has_key("end_time"), "no end_time response...")
        assert_that(res_data, has_key("left_times"), "no left_times response...")
        assert_that(res_data["left_times"], equal_to(15), "response left_times mismatch...")
        assert_that(res_data, has_key("reward_type"), "no left_times response...")
        assert_that(res_data["reward_type"], equal_to(0), "response left_times mismatch...")

    def test_get_reward_add_reward_attack(self):
        """
        获取悬赏令信息--获取追加悬赏令信息,包含追加前和追加后的信息\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "悬赏令使用者A登陆:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_1 = res_data["item_id"]
        self.ar_con.capture_pet(item_id_1)
        self.ar_con.set_cultivate_pet(item_id_1)
        part_1 = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part_1)
        print "创建好友玩家B:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "A同意添加好友B:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)

        print "B收到消息:"
        self.ar_con2.get_rev()
        print "创建好友玩家D:"
        account_id_4 = CoRand.get_rand_int(100001)
        uc_id_4 = CoRand.get_rand_int()
        self.ar_con4 = ARControl()
        self.ar_con4.connect_server()
        res = self.ar_con4.login(account_id_4, "im", uc_id_4)
        res_data = json.loads(res)
        user_id_4 = res_data["user_id"]
        nick_name_4 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con4.modify_info(nick_name_4)
        self.ar_con4.add_friend(user_id_1)
        print "A同意添加好友D:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_4, 1)

        print "D收到消息:"
        self.ar_con4.get_rev()

        print "创建攻击者玩家C:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)
        part_3 = CoRand.get_rand_int(1, 5)
        self.ar_con3.upgrade_pet_part(part_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_1, user_id_1)

        print "A使用普通通缉令通缉C:"
        self.ar_con.get_rev()
        res = self.ar_con.reward_player(0, user_id_3)
        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_SUCCESS["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]), "response msg mismatching...")
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_list"), "no reward_list response...")
        assert_that(res_data["reward_list"][0], has_key("reward_id"), "no reward_id response...")
        reward_id = res_data["reward_list"][0]["reward_id"]
        self.ar_con.evil_rank_list(0)
        print "好友玩家B收到消息,攻击被悬赏者C:"
        self.ar_con2.get_rev()
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        res = self.ar_con2.get_user_info(user_id_2)
        res_data = json.loads(res)
        coin_before = res_data["coin"]
        res = self.ar_con2.attack_pet(part_3, user_id_3, reward_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("win_coin"), "no win_coin response...")
        assert_that(res_data["win_coin"], equal_to(300000), "response win_coin mismatch...")
        assert_that(res_data, has_key("reward_coin"), "no reward_coin response...")
        assert_that(res_data["reward_coin"], equal_to(300000), "response reward_coin mismatch...")
        assert_that(res_data, has_key("coin"), "no coin response...")
        assert_that(res_data["coin"], equal_to(coin_before + 600000), "response reward_coin mismatch...")
        print"A获取悬赏令信息:"
        time.sleep(1)
        self.ar_con.get_rev()
        res = self.ar_con.get_reward_attack(reward_id)
        res_data = json.loads(res)

        assert_that(res_data[0], has_key("attack_time"), "no attack_time response...")
        assert_that(res_data[0], has_key("user_id"), "no user_id response...")
        assert_that(res_data[0]["user_id"], equal_to(user_id_2), "response user_id mismatch...")
        assert_that(res_data[0], has_key("nick_name"), "no nick_name response...")
        assert_that(res_data[0]["nick_name"], equal_to(nick_name_2), "response nick_name mismatch...")
        assert_that(res_data[0], has_key("toll"), "no toll response...")

        print "A追加高级悬赏令:"
        self.ar_con.reward_player(1, user_id_3)
        print "好友玩家D收到消息,攻击被悬赏者C:"
        self.ar_con4.get_rev()
        self.sql = ModifySql()
        self.sql.update_user(user_id_4, "guidance", 131071)
        self.ar_con4.gm_reload_user_data(user_id_4)
        self.sql = ModifySql()
        self.sql.update_user(user_id_4, "lottery_type", 104)
        self.ar_con4.gm_reload_user_data(user_id_4)
        res = self.ar_con4.attack_pet(part_3, user_id_3, reward_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("win_coin"), "no win_coin response...")
        assert_that(res_data["win_coin"], equal_to(300000), "response win_coin mismatch...")
        assert_that(res_data, has_key("reward_coin"), "no reward_coin response...")
        assert_that(res_data["reward_coin"], equal_to(300000), "response reward_coin mismatch...")
        assert_that(res_data, has_key("coin"), "no coin response...")

        # print "A自己攻击被悬赏者C:"
        # self.sql = ModifySql()
        # self.sql.update_user(user_id_1, "lottery_type", 104)
        # self.ar_con.gm_reload_user_data(user_id_1)
        # res = self.ar_con.attack_pet(part_3, user_id_3, reward_id)
        # res_data = json.loads(res)
        # assert_that(res_data[0], has_key("reward_coin"), "no reward_coin response...")
        # assert_that(res_data[0]["reward_coin"], equal_to(300000), "response reward_coin mismatch...")
        self.ar_con.get_rev()
        print"获取悬赏令信息:"
        time.sleep(1)
        res = self.ar_con.get_reward_attack(reward_id)
        res_data = json.loads(res)

        assert_that(res_data[0], has_key("attack_time"), "no attack_time response...")
        assert_that(res_data[0], has_key("user_id"), "no user_id response...")
        assert_that(res_data[0]["user_id"], equal_to(user_id_2), "response user_id mismatch...")
        assert_that(res_data[0], has_key("nick_name"), "no nick_name response...")
        assert_that(res_data[0]["nick_name"], equal_to(nick_name_2), "response nick_name mismatch...")
        assert_that(res_data[0], has_key("toll"), "no toll response...")
        assert_that(res_data[1], has_key("attack_time"), "no attack_time response...")
        assert_that(res_data[1], has_key("user_id"), "no user_id response...")
        assert_that(res_data[1]["user_id"], equal_to(user_id_4), "response user_id mismatch...")
        assert_that(res_data[1], has_key("nick_name"), "no nick_name response...")
        assert_that(res_data[1]["nick_name"], equal_to(nick_name_4), "response nick_name mismatch...")
        assert_that(res_data[1], has_key("toll"), "no toll response...")

    def test_get_reward_total_toll_statistics(self):
        """
        获取悬赏令信息--验证累计损失、累计攻击次数数据正确性\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "悬赏令使用者A登陆:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_1 = res_data["item_id"]
        self.ar_con.capture_pet(item_id_1)
        self.ar_con.set_cultivate_pet(item_id_1)
        part_1 = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part_1)
        print "创建好友玩家B:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "A同意添加好友B:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)

        print "B收到消息:"
        self.ar_con2.get_rev()
        print "创建好友玩家D:"
        account_id_4 = CoRand.get_rand_int(100001)
        uc_id_4 = CoRand.get_rand_int()
        self.ar_con4 = ARControl()
        self.ar_con4.connect_server()
        res = self.ar_con4.login(account_id_4, "im", uc_id_4)
        res_data = json.loads(res)
        user_id_4 = res_data["user_id"]
        nick_name_4 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con4.modify_info(nick_name_4)
        self.ar_con4.add_friend(user_id_1)
        print "A同意添加好友D:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_4, 1)

        print "D收到消息:"
        self.ar_con4.get_rev()

        print "创建攻击者玩家C:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        res = self.ar_con3.get_user_coin()
        res_data = json.loads(res)
        coin_before = res_data["coin"]
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)

        part_attacker_1 = 1
        res = self.ar_con3.upgrade_pet_part(part_attacker_1)
        res_data = json.loads(res)
        coin_part_1_level_1 = coin_before - res_data["coin"]

        res = self.ar_con3.upgrade_pet_part(part_attacker_1)
        res_data = json.loads(res)
        coin_part_1_level_2 = coin_before - res_data["coin"] - coin_part_1_level_1

        part_attacker_2 = 2
        res = self.ar_con3.upgrade_pet_part(part_attacker_2)
        res_data = json.loads(res)
        coin_part_2_level_1 = coin_before - res_data["coin"] - coin_part_1_level_1 - coin_part_1_level_2

        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_1, user_id_1)

        print "A使用普通通缉令通缉C:"
        self.ar_con.get_rev()
        res = self.ar_con.reward_player(0, user_id_3)
        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_SUCCESS["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]), "response msg mismatching...")
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_list"), "no reward_list response...")
        assert_that(res_data["reward_list"][0], has_key("reward_id"), "no reward_id response...")
        reward_id = res_data["reward_list"][0]["reward_id"]
        self.ar_con.evil_rank_list(0)

        print "好友玩家B收到消息,攻击被悬赏者C,打坏部件2:"
        self.ar_con2.get_rev()
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.ar_con2.pm_set_role_data("lotteryType", 104)
        res = self.ar_con2.get_user_info(user_id_2)
        res_data = json.loads(res)
        coin_before = res_data["coin"]
        res = self.ar_con2.attack_pet(part_attacker_2, user_id_3, reward_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("win_coin"), "no win_coin response...")
        assert_that(res_data["win_coin"], equal_to(300000), "response win_coin mismatch...")
        assert_that(res_data, has_key("reward_coin"), "no reward_coin response...")
        assert_that(res_data["reward_coin"], equal_to(300000), "response reward_coin mismatch...")
        assert_that(res_data, has_key("coin"), "no coin response...")
        assert_that(res_data["coin"], equal_to(coin_before + 600000), "response reward_coin mismatch...")
        res = self.ar_con.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("toll"), "no toll response...")
        assert_that(res_data["toll"], equal_to(int(coin_part_2_level_1*0.5)))

        print "好友玩家D收到消息,攻击被悬赏者C,打坏部件1:"
        self.ar_con4.get_rev()
        self.sql = ModifySql()
        self.sql.update_user(user_id_4, "guidance", 131071)
        self.ar_con4.gm_reload_user_data(user_id_4)
        self.ar_con4.pm_set_role_data("lotteryType", 104)
        self.ar_con4.attack_pet(part_attacker_1, user_id_3, reward_id)
        print "A收到消息:"
        res = self.ar_con.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("toll"), "no toll response...")
        assert_that(res_data["toll"], equal_to(int(coin_part_1_level_2 * 0.5)))
        print "好友玩家D再次攻击被悬赏者C,打爆部件1:"
        self.ar_con4.pm_set_role_data("lotteryType", 104)
        self.ar_con4.attack_pet(part_attacker_1, user_id_3, reward_id)
        print "A收到消息:"
        res = self.ar_con.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("toll"), "no toll response...")
        assert_that(res_data["toll"], equal_to(int(coin_part_1_level_2 * 0.5)+coin_part_1_level_1))

        print "A自己攻击被悬赏者C,打爆部件2:"
        self.ar_con.pm_set_role_data("lotteryType", 104)
        self.ar_con.attack_pet(part_attacker_2, user_id_3, reward_id)
        res = self.ar_con.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("toll"), "no toll response...")
        assert_that(res_data["toll"], equal_to(int(coin_part_2_level_1*0.5)))
        print"获取悬赏令信息:"
        time.sleep(1)
        res = self.ar_con.get_reward(reward_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_id"], equal_to(reward_id), "response reward_id mismatch...")
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_1), "response user_id mismatch...")
        assert_that(res_data, has_key("be_reward_user_id"), "no be_reward_user_id response...")
        assert_that(res_data["be_reward_user_id"], equal_to(user_id_3), "response be_reward_user_id mismatch...")
        assert_that(res_data, has_key("end_time"), "no end_time response...")
        assert_that(res_data, has_key("left_times"), "no left_times response...")
        assert_that(res_data["left_times"], equal_to(1), "response left_times mismatch...")
        assert_that(res_data, has_key("reward_type"), "no left_times response...")
        assert_that(res_data["reward_type"], equal_to(0), "response left_times mismatch...")
        assert_that(res_data, has_key("total_toll"), "no total_toll response...")
        assert_that(res_data["total_toll"], equal_to(coin_part_1_level_1+coin_part_1_level_2+coin_part_2_level_1), "response total_toll mismatch...")
        assert_that(res_data, has_key("total_attack"), "no total_attack response...")
        assert_that(res_data["total_attack"], equal_to(4), "response total_attack mismatch...")
Пример #3
0
class AddFriendTest(unittest.TestCase):
    def setUp(self):
        print 'start run AddFriend test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.api_name = "addFriend"
        self.account_id = 100861

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

    def test_add_friend_success(self):
        """
        请求添加好友发送成功\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "玩家1执行操作:"
        account_id = CoRand.get_rand_int(100001)
        uc_id = CoRand.get_rand_int()
        res = self.ar_con.login(account_id, "im", uc_id)
        res_data = json.loads(res)
        user_id = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        print "玩家2执行操作:"
        self.ar_con.connect_server()
        uc_id = CoRand.get_rand_int()
        self.ar_con.login(100861, "im", uc_id)
        res = self.ar_con.add_friend(user_id)
        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_SUCCESS["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]),
                    "response msg mismatching...")

    def test_add_friend_without_uc_id(self):
        """
        添加好友--玩家无uc_id\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "玩家1执行操作:"
        account_id_1 = CoRand.get_rand_int(100001)
        res = self.ar_con.login(account_id_1, "im")
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        print "玩家2执行操作:"
        account_id_2 = CoRand.get_rand_int(100001)
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im")
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        res = self.ar_con2.add_friend(user_id_1)
        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_UCID_INVALID["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_UCID_INVALID["err_msg"]),
                    "response msg mismatching...")

    def test_add_friend_already_added(self):
        """
        已是好友,再次请求添加好友\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()

        print "玩家2执行操作:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家1执行操作:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)

        print "玩家2执行操作:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, 1)
        print "玩家1执行操作:"
        self.ar_con.get_rev()
        res = self.ar_con.add_friend(user_id_2)
        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_FRIEND_ALREADY_EXISTED["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_FRIEND_ALREADY_EXISTED["err_msg"]),
                    "response msg mismatching...")

    def test_add_friend_request_repeat(self):
        """
        已经请求加好友了,再次请求\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()

        print "创建玩家2后离线:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.close()
        time.sleep(1)
        print "玩家1两次请求添加好友:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        self.ar_con.add_friend(user_id_2)

        print "玩家2登陆获取未读消息:"
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        res = self.ar_con2.get_unread_msg()
        res_data = json.loads(res)
        assert_that(res_data, has_length(1), "response length mismatch...")
        for i in res_data:
            assert_that(i, has_key("msg"), "no msg response...")
            assert_that(i["msg"], has_key("user_id"), "no user_id response...")
            assert_that(i["msg"]["user_id"], equal_to(user_id_1),
                        "response user_id mismatch...")
            assert_that(i["msg"], has_key("type"), "no op response...")
            assert_that(i["msg"]["type"], equal_to(1),
                        "response op mismatch...")

        self.ar_con2.deal_add_friend(user_id_1, 1)
        print "玩家2重复处理好友请求"
        res = self.ar_con2.deal_add_friend(user_id_1, 1)
        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_REQUEST_HAD_DEAL["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_REQUEST_HAD_DEAL["err_msg"]),
                    "response msg mismatching...")

    def test_add_friend_mutual_request(self):
        """
        A请求B加好友,B也请求A加好友\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()

        print "创建玩家B:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "创建玩家A,向B申请添加好友:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)

        print "玩家B也向A申请添加好友:"
        self.ar_con2.get_rev()
        self.ar_con2.add_friend(user_id_1)
        print "玩家A同意添加好友:"
        self.ar_con.get_rev()
        res = self.ar_con.deal_add_friend(user_id_2, 1)
        res_data = json.loads(res)
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data, has_key("convid"), "no convid response...")
        assert_that(res_data["user_id"], equal_to(user_id_2),
                    "response code mismatching...")
        print "B再次处理添加好友请求:"
        self.ar_con2.get_rev()
        res = self.ar_con2.deal_add_friend(user_id_1, 1)
        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_FRIEND_ALREADY_EXISTED["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_FRIEND_ALREADY_EXISTED["err_msg"]),
                    "response msg mismatching...")

    def test_add_friend_self(self):
        """
        添加好友--添加自己\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id = CoRand.get_rand_int(100001)
        uc_id = CoRand.get_rand_int()
        res = self.ar_con.login(account_id, "im", uc_id)
        res_data = json.loads(res)
        user_id = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.add_friend(user_id)
        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_ALLOW_ADDSELF["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_NOT_ALLOW_ADDSELF["err_msg"]),
                    "response msg mismatching...")

    def test_add_friend_not_exist(self):
        """
        添加不存在的好友\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id = CoRand.get_rand_int(100001)
        uc_id = CoRand.get_rand_int()
        res = self.ar_con.login(account_id, "im", uc_id)
        res_data = json.loads(res)
        user_id = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        user_id_not_exist = CoRand.get_rand_int()
        res = self.ar_con.add_friend(user_id_not_exist)
        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_USER_NOT_EXIST["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_USER_NOT_EXIST["err_msg"]),
                    "response msg mismatching...")
Пример #4
0
class DelFriendTest(unittest.TestCase):
    def setUp(self):
        print 'start run DelFriend test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.api_name = "delFriend"
        self.account_id = 100861

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

    def test_del_friend(self):
        """
        删除好友:删除成功\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家A:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家B向A请求添加好友:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "A同意好友请求:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, 1)

        res = self.ar_con2.get_friend_list()
        res_data = json.loads(res)
        for friend in res_data:
            assert_that(friend, has_key("user_id"), "no user_id response...")
            assert_that(friend["user_id"], equal_to(user_id_1),
                        "response user_id mismatch")
            assert_that(friend, has_key("nick_name"),
                        "no nick_name response...")
            assert_that(friend, has_key("sex"), "no sex response...")
            assert_that(friend, has_key("icon"), "no icon response...")
            assert_that(friend, has_key("star"), "no star response...")
            assert_that(friend["star"], equal_to(0),
                        "response user_id mismatch")
        print "A删除好友B:"
        res = self.ar_con2.del_friend(user_id_1)
        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_SUCCESS["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]),
                    "response msg mismatching...")
        res = self.ar_con2.get_friend_list()
        res_data = json.loads(res)
        assert res_data == [], "response mismatch..."

    def test_del_friend_repeat(self):
        """
        删除好友:重复删除\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家A:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家B向A请求添加好友:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "A同意好友请求:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, 1)

        res = self.ar_con2.get_friend_list()
        res_data = json.loads(res)
        for friend in res_data:
            assert_that(friend, has_key("user_id"), "no user_id response...")
            assert_that(friend["user_id"], equal_to(user_id_1),
                        "response user_id mismatch")
            assert_that(friend, has_key("nick_name"),
                        "no nick_name response...")
            assert_that(friend, has_key("sex"), "no sex response...")
            assert_that(friend, has_key("icon"), "no icon response...")
            assert_that(friend, has_key("star"), "no star response...")
            assert_that(friend["star"], equal_to(0),
                        "response user_id mismatch")
        print "A重复删除好友B:"
        self.ar_con2.del_friend(user_id_1)
        res = self.ar_con2.del_friend(user_id_1)
        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_FOUND_FRIEND_INFO["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_NOT_FOUND_FRIEND_INFO["err_msg"]),
                    "response msg mismatching...")
        res = self.ar_con2.get_friend_list()
        res_data = json.loads(res)
        assert res_data == [], "response mismatch..."

    def test_del_friend_not_friend(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_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.del_friend(100861)
        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_FOUND_FRIEND_INFO["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_NOT_FOUND_FRIEND_INFO["err_msg"]),
                    "response msg mismatching...")
Пример #5
0
class GetFriendListTest(unittest.TestCase):
    def setUp(self):
        print 'start run GetFriendList test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.api_name = "getFriendList"
        self.account_id = 100861

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

    def test_get_friend_list_no_friend(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_friend_list()
        res_data = json.loads(res)

        assert_that(res_data, equal_to([]), "response error...")

    def test_get_friend_list_success(self):
        """
        获取好友列表成功\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "玩家2执行操作:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家1执行操作:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "玩家2执行操作:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, 1)
        time.sleep(1)
        self.ar_con2.get_friend_list()
        print "玩家1执行操作:"
        self.ar_con.get_rev()
        time.sleep(1)
        res = self.ar_con.get_friend_list()
        res_data = json.loads(res)

        for friend in res_data:
            assert_that(friend, has_key("user_id"), "no user_id response...")
            assert_that(friend["user_id"], equal_to(user_id_2),
                        "response user_id mismatch")
            assert_that(friend, has_key("nick_name"),
                        "no nick_name response...")
            assert_that(friend["nick_name"], equal_to(nick_name_2),
                        "response nick_name mismatch")
            assert_that(friend, has_key("sex"), "no sex response...")
            assert_that(friend["sex"], equal_to(0), "response sex mismatch")
            assert_that(friend, has_key("icon"), "no icon response...")
            assert_that(friend["icon"], equal_to("https://www.baidu.com/"),
                        "response icon mismatch")
            assert_that(friend, has_key("star"), "no star response...")
            assert_that(friend["star"], equal_to(0), "response star mismatch")
            assert_that(friend, has_key("can_attack"),
                        "no can_attack response...")
            assert_that(friend, has_key("attack"), "no attack response...")
            assert_that(friend, has_key("conv_id"), "no conv_id response...")
class DealAddFriendTest(unittest.TestCase):
    def setUp(self):
        print 'start run DealAddFriend test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.api_name = "dealAddFriend"
        self.account_id = 100861

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

    def test_deal_add_friend_agree(self):
        """
        同意添加好友请求成功\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "玩家2执行操作:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家1执行操作:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "玩家2执行操作:"
        self.ar_con2.get_rev()
        op = 1
        res = self.ar_con2.deal_add_friend(user_id_1, op)
        res_data = json.loads(res)

        assert_that(res_data, has_key("convid"), "no convid response...")

        res = self.ar_con2.get_friend_list()
        res_data = json.loads(res)
        for friend in res_data:
            assert_that(friend, has_key("user_id"), "no user_id response...")
            assert_that(friend["user_id"], equal_to(user_id_1), "response user_id mismatch")
            assert_that(friend, has_key("nick_name"), "no nick_name response...")
            assert_that(friend, has_key("sex"), "no sex response...")
            assert_that(friend, has_key("icon"), "no icon response...")
            assert_that(friend, has_key("star"), "no star response...")
            assert_that(friend["star"], equal_to(0), "response user_id mismatch")

    def test_deal_add_friend_refuse(self):
        """
        拒绝添加好友请求成功\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "玩家2执行操作:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家1执行操作:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "玩家2执行操作:"
        self.ar_con2.get_rev()
        op = -1
        res = self.ar_con2.deal_add_friend(user_id_1, op)
        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_SUCCESS["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]), "response msg mismatching...")

        res = self.ar_con2.get_friend_list()
        res_data = json.loads(res)

        assert_that(res_data, equal_to([]), "response mismatch...")

    def test_deal_add_friend_error_user(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_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.deal_add_friend(100861, 1)
        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_REQUEST_NOT_FOUND["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_REQUEST_NOT_FOUND["err_msg"]), "response msg mismatching...")

    def test_deal_add_friend_error_op(self):
        """
        处理添加好友请求,op参数取值错误\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "玩家2执行操作:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家1执行操作:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "玩家2执行操作:"
        self.ar_con2.get_rev()
        op = 123
        res = self.ar_con2.deal_add_friend(user_id_1, op)
        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_INVALID_REQUEST_PARAM["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_INVALID_REQUEST_PARAM["err_msg"]), "response msg mismatching...")

    def test_deal_add_friend_without_params(self):
        """
        处理添加好友请求,不带参数\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        self.ar_con.login(self.account_id, "im")
        json_body = {}
        res = self.ar_con.get_res(self.api_name, json_body)
        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_INVALID_REQUEST_PARAM["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_INVALID_REQUEST_PARAM["err_msg"]), "response msg mismatching...")
class GetUnreadMsgTest(unittest.TestCase):
    def setUp(self):
        print 'start run GetUnreadMsg test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.api_name = "getUnReadMsg"
        self.account_id = 100861
        self.pet_url = "http://192.168.19.220/v0.1/static/cscommon/avatar/123456789/123456789.jpg"

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

    def test_get_unread_msg_add_friend_online(self):
        """
        获取未读消息--添加好友(在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()

        print "玩家2执行操作:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家1执行操作:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "玩家2执行操作:"
        res = self.ar_con2.get_rev()
        res_data = json.loads(res)
        # assert_that(res_data, has_key("type"), "no type response...")
        # assert_that(res_data["type"], equal_to(1), "response type mismatch...")
        # assert_that(res_data, has_key("user_id"), "no user_id response...")
        # assert_that(res_data["user_id"], equal_to(user_id_1), "response type mismatch...")

    def test_get_unread_msg_add_friend_offline(self):
        """
        获取未读消息--添加好友(不在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建玩家2后离线:"
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.close()
        time.sleep(1)

        print "玩家1向2请求添加好友:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)

        print "玩家2登陆后获取未读消息:"
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        res = self.ar_con2.get_unread_msg()
        res_data = json.loads(res)
        assert res_data != [], "response mismatch..."
        for i in res_data:
            assert_that(i, has_key("msg"), "no msg response...")
            assert_that(i["msg"], has_key("type"), "no type response...")
            assert_that(i["msg"]["type"], equal_to(1), "response type mismatch...")
            assert_that(i["msg"], has_key("user_id"), "no user_id response...")
            assert_that(i["msg"]["user_id"], equal_to(user_id_1), "response user_id mismatch...")

    def test_get_unread_msg_deal_add_friend_agree_online(self):
        """
        获取未读消息--同意添加好友(在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "玩家2执行操作:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家1执行操作:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "玩家2执行操作:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, 1)
        print "玩家1执行操作:"
        res = self.ar_con.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_2), "response user_id mismatch...")
        assert_that(res_data, has_key("op"), "no op response...")
        assert_that(res_data["op"], equal_to(1), "response op mismatch...")
        assert_that(res_data, has_key("convid"), "no convid response...")

    def test_get_unread_msg_deal_add_friend_agree_offline(self):
        """
        获取未读消息--同意添加好友(不在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建玩家2:"
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)

        print "玩家1向2请求添加好友后离线:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        self.ar_con.close()
        time.sleep(1)

        print "玩家2同意好友请求:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, 1)

        print "玩家1登陆后获取消息:"
        self.ar_con.connect_server()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        res = self.ar_con.get_unread_msg()
        res_data = json.loads(res)
        assert res_data != [], "response mismatch..."
        for i in res_data:
            assert_that(i, has_key("msg"), "no msg response...")
            assert_that(i["msg"], has_key("user_id"), "no user_id response...")
            assert_that(i["msg"]["user_id"], equal_to(user_id_2), "response user_id mismatch...")
            assert_that(i["msg"], has_key("op"), "no op response...")
            assert_that(i["msg"]["op"], equal_to(1), "response op mismatch...")
            assert_that(i["msg"], has_key("convid"), "no convid response...")

    def test_get_unread_msg_deal_add_friend_refuse_online(self):
        """
        获取未读消息--拒绝添加好友(在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "玩家2执行操作:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家1执行操作:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "玩家2执行操作:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, -1)
        print "玩家1执行操作:"
        res = self.ar_con.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_2), "response user_id mismatch...")
        assert_that(res_data, has_key("op"), "no op response...")
        assert_that(res_data["op"], equal_to(-1), "response op mismatch...")
        assert_that(res_data, has_key("type"), "no type response...")
        assert_that(res_data["type"], equal_to(2), "response type mismatch...")

    def test_get_unread_msg_deal_add_friend_refuse_offline(self):
        """
        获取未读消息--拒绝添加好友(不在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "玩家2执行操作:"
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)

        print "玩家1执行操作后离线:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        self.ar_con.close()
        time.sleep(1)

        print "玩家2处理好友请求:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, -1)

        print "玩家1登陆后获取消息:"
        self.ar_con.connect_server()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        res = self.ar_con.get_unread_msg()
        res_data = json.loads(res)
        assert res_data != [], "response mismatch..."
        for i in res_data:
            assert_that(i, has_key("msg"), "no msg response...")
            assert_that(i["msg"], has_key("user_id"), "no user_id response...")
            assert_that(i["msg"]["user_id"], equal_to(user_id_2), "response user_id mismatch...")
            assert_that(i["msg"], has_key("op"), "no op response...")
            assert_that(i["msg"]["op"], equal_to(-1), "response op mismatch...")

    def test_get_unread_msg_no_msg(self):
        """
        无未读消息\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        self.ar_con.login(self.account_id, "im")
        res = self.ar_con.get_unread_msg()
        res_data = json.loads(res)

        assert_that(res_data, equal_to([]), "response mismatch...")

    # def test_get_unread_msg_coin_steal_online(self):
    #     """
    #     获取未读消息--金币被偷取(在线)\
    #     开发:黄良江(900000)\
    #     测试:林冰晶(791099)
    #     """
    #     account_id_1 = CoRand.get_rand_int(100001)
    #     res = self.ar_con.login(account_id_1, "im")
    #     res_data = json.loads(res)
    #     user_id_1 = res_data["user_id"]
    #     nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
    #     self.ar_con.modify_info(nick_name_1)
    #     self.sql = ModifySql()
    #     self.sql.update_user(user_id_1, "guidance", 131071)
    #     self.ar_con.gm_reload_user_data(user_id_1)
    #     self.sql = ModifySql()
    #     self.sql.update_user(user_id_1, "lottery_type", 105)
    #     self.ar_con.gm_reload_user_data(user_id_1)
    #     print "玩家获取富豪列表:"
    #     res = self.ar_con.get_rich_player_list()
    #     res_data = json.loads(res)
    #     user_total_ids = []
    #     coins = []
    #     for i in res_data:
    #         assert_that(i, has_key("user_id"), "no user_id response...")
    #         user_total_ids.append(i["user_id"])
    #         res_info = self.ar_con.get_user_info(i["user_id"])
    #         res_info_data = json.loads(res_info)
    #         coins.append(res_info_data["coin"])
    #     # 获取富豪user_id和coin
    #     rich_user_index = coins.index(max(coins))
    #     rich_user_id = user_total_ids[rich_user_index]
    #     user_ids = [rich_user_id]
    #     print rich_user_id
    #     print "被偷取玩家登录:"
    #     self.sql = ModifySql()
    #     rich_account_id = self.sql.query_account_id(rich_user_id)
    #     self.ar_con2 = ARControl()
    #     self.ar_con2.connect_server()
    #     self.ar_con2.login(rich_account_id, "im")
    #     print "玩家捕捉富豪:"
    #     self.ar_con.catch_player_list(user_ids)
    #     print "被偷取玩家收到服务端消息:"
    #     res = self.ar_con2.get_rev()
    #     res_data = json.loads(res)
    #     assert_that(res_data, has_key("user_id"), "no user_id response...")
    #     assert_that(res_data["user_id"], equal_to(user_id_1), "response user_id mismatch...")
    #     assert_that(res_data, has_key("type"), "no type response...")
    #     assert_that(res_data["type"], equal_to(4), "response type mismatch...")
    #     assert_that(res_data, has_key("steal_time"), "no steal_time response...")
    #     assert_that(res_data, has_key("steal_coin"), "no steal_coin response...")
    #     assert_that(res_data["steal_coin"], equal_to(int(max(coins)*0.7)), "response steal_coin mismatch...")

    def test_get_unread_msg_coin_steal_offline(self):
        """
        获取未读消息--金币被偷取(不在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        res = self.ar_con.login(account_id_1, "im")
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "guidance", 131071)
        self.ar_con.gm_reload_user_data(user_id_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "lottery_type", 105)
        self.ar_con.gm_reload_user_data(user_id_1)
        print "玩家获取富豪列表:"
        res = self.ar_con.get_rich_player_list()
        res_data = json.loads(res)
        user_total_ids = []
        coins = []
        for i in res_data:
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_total_ids.append(i["user_id"])
            res_info = self.ar_con.get_user_info(i["user_id"])
            res_info_data = json.loads(res_info)
            coins.append(res_info_data["coin"])
        # 获取富豪user_id和coin
        rich_user_index = coins.index(max(coins))
        rich_user_id = user_total_ids[rich_user_index]
        user_ids = [rich_user_id]
        print "玩家捕捉富豪:"
        self.ar_con.catch_player_list(user_ids)
        print "被偷取玩家登录:"
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        self.ar_con2.login(rich_user_id, "im")
        print "被偷取玩家获取未读消息:"
        res = self.ar_con2.get_unread_msg()
        res_data = json.loads(res)
        msg_user_list = []
        if res_data!=[]:
            for i in res_data:
                assert_that(i, has_key("msg"), "no msg response...")
                assert_that(i["msg"], has_key("user_id"), "no user_id response...")
                msg_user_list.append(i["msg"]["user_id"])
            assert user_id_1 in msg_user_list
            msg_index = msg_user_list.index(user_id_1)

            assert_that(res_data[msg_index]["msg"], has_key("type"), "no type response...")
            assert_that(res_data[msg_index]["msg"]["type"], equal_to(4), "response type mismatch...")
            assert_that(res_data[msg_index]["msg"], has_key("steal_time"), "no steal_time response...")
            assert_that(res_data[msg_index]["msg"], has_key("steal_coin"), "no steal_coin response...")
            assert_that(res_data[msg_index]["msg"]["steal_coin"], equal_to(int(max(coins)*0.7)),
                        "response steal_coin mismatch...")
        else:
            pass

    def test_attack_pet_attacked_user_notify_online(self):
        """
        获取未读消息--验证无护盾玩家被攻击通知(在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家A:"
        res = self.ar_con.login(account_id_1, "im")
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id = res_data["item_id"]
        self.ar_con.capture_pet(item_id)
        self.ar_con.set_cultivate_pet(item_id)
        part = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part)

        #   第一次攻击
        print "创建玩家B,攻击A:"
        res = self.ar_con2.login(account_id_2, "im")
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.ar_con2.attack_pet(part, user_id_1)
        print "玩家A获取服务端消息:"
        res = self.ar_con.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("type"), "no type response...")
        assert_that(res_data["type"], equal_to(3), "response type mismatch...")
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_2), "response user_id mismatch...")
        assert_that(res_data, has_key("attack_time"), "no attack_time response...")
        assert_that(res_data, has_key("part"), "no part response...")
        assert_that(res_data["part"], equal_to(part), "response part mismatch...")
        assert_that(res_data, has_key("level"), "no level response...")
        assert_that(res_data["level"], equal_to(1), "response level mismatch...")
        assert_that(res_data, has_key("status"), "no status response...")
        assert_that(res_data["status"], equal_to(1), "response status mismatch...")
        assert_that(res_data, has_key("star"), "no star response...")
        assert_that(res_data["star"], equal_to(1), "response star mismatch...")
        assert_that(res_data, has_key("shield"), "no shield response...")
        assert_that(res_data["shield"], equal_to(0), "response shield mismatch...")

        #   第二次攻击
        print "玩家B第二次攻击A:"
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.ar_con2.attack_pet(part, user_id_1)
        print "玩家A获取服务端消息:"
        res = self.ar_con.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("type"), "no type response...")
        assert_that(res_data["type"], equal_to(3), "response type mismatch...")
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_2), "response user_id mismatch...")
        assert_that(res_data, has_key("attack_time"), "no attack_time response...")
        assert_that(res_data, has_key("part"), "no part response...")
        assert_that(res_data["part"], equal_to(part), "response part mismatch...")
        assert_that(res_data, has_key("level"), "no level response...")
        assert_that(res_data["level"], equal_to(0), "response level mismatch...")
        assert_that(res_data, has_key("status"), "no status response...")
        assert_that(res_data["status"], equal_to(0), "response status mismatch...")
        assert_that(res_data, has_key("star"), "no star response...")
        assert_that(res_data["star"], equal_to(0), "response star mismatch...")
        assert_that(res_data, has_key("shield"), "no shield response...")
        assert_that(res_data["shield"], equal_to(0), "response shield mismatch...")

    def test_attack_pet_attacked_user_notify_offline(self):
        """
        获取未读消息-验证有护盾玩家被攻击通知(不在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家A后离线:"
        res = self.ar_con.login(account_id_1, "im")
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "shield", 2)
        self.ar_con.gm_reload_user_data(user_id_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id = res_data["item_id"]
        self.ar_con.capture_pet(item_id)
        self.ar_con.set_cultivate_pet(item_id)
        part = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part)
        self.ar_con.close()
        time.sleep(1)

        print "创建玩家B,攻击A:"
        res = self.ar_con2.login(account_id_2, "im")
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.ar_con2.attack_pet(part, user_id_1)
        print "玩家A获取未读消息后离线:"
        self.ar_con.connect_server()
        res = self.ar_con.login(account_id_1, "im")
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        res = self.ar_con.get_unread_msg()
        res_data = json.loads(res)
        assert res_data != [], "response mismatch..."
        for i in res_data:
            assert_that(i, has_key("msg"), "no msg response...")
            assert_that(i["msg"], has_key("user_id"), "no user_id response...")
            assert_that(i["msg"]["user_id"], equal_to(user_id_2), "response user_id mismatch...")
            assert_that(i["msg"], has_key("type"), "no type response...")
            assert_that(i["msg"]["type"], equal_to(3), "response type mismatch...")
            assert_that(i["msg"], has_key("attack_time"), "no attack_time response...")
            assert_that(i["msg"], has_key("part"), "no part response...")
            assert_that(i["msg"]["part"], equal_to(part), "response part mismatch...")
            assert_that(i["msg"], has_key("level"), "no level response...")
            assert_that(i["msg"]["level"], equal_to(1), "response level mismatch...")
            assert_that(i["msg"], has_key("status"), "no status response...")
            assert_that(i["msg"]["status"], equal_to(0), "response status mismatch...")
            assert_that(i["msg"], has_key("star"), "no star response...")
            assert_that(i["msg"]["star"], equal_to(1), "response star mismatch...")
            assert_that(i["msg"], has_key("shield"), "no shield response...")
            assert_that(i["msg"]["shield"], equal_to(2), "response shield mismatch...")
        self.ar_con.close()
        time.sleep(1)

        print "玩家B第二次攻击A:"
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.ar_con2.attack_pet(part, user_id_1)
        print "玩家A登陆,获取未读消息:"
        self.ar_con.connect_server()
        res = self.ar_con.login(account_id_1, "im")
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        res = self.ar_con.get_unread_msg()
        res_data = json.loads(res)
        assert res_data != [], "response mismatch..."
        for i in res_data:
            assert_that(i, has_key("msg"), "no msg response...")
            assert_that(i["msg"], has_key("user_id"), "no user_id response...")
            assert_that(i["msg"]["user_id"], equal_to(user_id_2), "response user_id mismatch...")
            assert_that(i["msg"], has_key("type"), "no type response...")
            assert_that(i["msg"]["type"], equal_to(3), "response type mismatch...")
            assert_that(i["msg"], has_key("attack_time"), "no attack_time response...")
            assert_that(i["msg"], has_key("part"), "no part response...")
            assert_that(i["msg"]["part"], equal_to(part), "response part mismatch...")
            assert_that(i["msg"], has_key("level"), "no level response...")
            assert_that(i["msg"]["level"], equal_to(1), "response level mismatch...")
            assert_that(i["msg"], has_key("status"), "no status response...")
            assert_that(i["msg"]["status"], equal_to(0), "response status mismatch...")
            assert_that(i["msg"], has_key("star"), "no star response...")
            assert_that(i["msg"]["star"], equal_to(1), "response star mismatch...")
            assert_that(i["msg"], has_key("shield"), "no shield response...")
            assert_that(i["msg"]["shield"], equal_to(2), "response shield mismatch...")

    def test_get_unread_msg_reward_player_online(self):
        """
        获取未读消息--验证悬赏消息(在线),包含部件被打坏、打爆\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "悬赏令使用者登陆:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_1 = res_data["item_id"]
        self.ar_con.capture_pet(item_id_1)
        self.ar_con.set_cultivate_pet(item_id_1)
        part_1 = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part_1)
        print "创建好友玩家:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "悬赏令使用者同意添加好友:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)
        print "好友玩家收到消息:"
        self.ar_con2.get_rev()

        print "创建攻击者玩家:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        res = self.ar_con3.get_user_info(user_id_3)
        res_data = json.loads(res)
        coin_before = res_data["coin"]
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)
        part_3 = CoRand.get_rand_int(1, 5)
        res = self.ar_con3.upgrade_pet_part(part_3)
        res_data = json.loads(res)
        coin_level_1 = coin_before - res_data["coin"]
        res = self.ar_con3.upgrade_pet_part(part_3)
        res_data = json.loads(res)
        coin_level_2 = coin_before - res_data["coin"] - coin_level_1
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_1, user_id_1)

        print "悬赏令使用普通通缉令通缉攻击者:"
        self.ar_con.get_rev()
        self.ar_con.get_enemy_list()
        self.ar_con.reward_player(0, user_id_3)

        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_list"), "no reward_list response...")
        assert_that(res_data["reward_list"][0], has_key("reward_id"), "no reward_id response...")
        reward_id = res_data["reward_list"][0]["reward_id"]
        self.ar_con.evil_rank_list(0)

        print "好友玩家收到消息并攻击被悬赏者:"
        res = self.ar_con2.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_1), "response user_id mismatch...")
        assert_that(res_data, has_key("be_reward_user_id"), "no be_reward_user_id response...")
        assert_that(res_data["be_reward_user_id"], equal_to(user_id_3), "response be_reward_user_id mismatch...")
        assert_that(res_data, has_key("type"), "no type response...")
        assert_that(res_data["type"], equal_to(6), "response type mismatch...")
        assert_that(res_data, has_key("reward_type"), "no reward_type response...")
        assert_that(res_data["reward_type"], equal_to(0), "response reward_type mismatch...")
        assert_that(res_data, has_key("reward_time"), "no reward_time response...")
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.ar_con2.attack_pet(part_3, user_id_3, reward_id)

        print "悬赏者收到消息:"
        res = self.ar_con.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_2), "response user_id mismatch...")
        assert_that(res_data, has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_id"], equal_to(reward_id), "response reward_id mismatch...")
        assert_that(res_data, has_key("type"), "no type response...")
        assert_that(res_data["type"], equal_to(5), "response type mismatch...")
        assert_that(res_data, has_key("reward_type"), "no reward_type response...")
        assert_that(res_data["reward_type"], equal_to(0), "response reward_type mismatch...")
        assert_that(res_data, has_key("attack_time"), "no attack_time response...")
        assert_that(res_data, has_key("toll"), "no toll response...")
        assert_that(res_data["toll"], equal_to(int(coin_level_2*0.5)), "response toll mismatch...")

        print "好友玩家再次攻击被悬赏者:"
        self.ar_con2.pm_set_role_data("lotteryType", 104)
        self.ar_con2.attack_pet(part_3, user_id_3, reward_id)

        print "悬赏者收到消息:"
        res = self.ar_con.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_2), "response user_id mismatch...")
        assert_that(res_data, has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_id"], equal_to(reward_id), "response reward_id mismatch...")
        assert_that(res_data, has_key("type"), "no type response...")
        assert_that(res_data["type"], equal_to(5), "response type mismatch...")
        assert_that(res_data, has_key("reward_type"), "no reward_type response...")
        assert_that(res_data["reward_type"], equal_to(0), "response reward_type mismatch...")
        assert_that(res_data, has_key("attack_time"), "no attack_time response...")
        assert_that(res_data, has_key("toll"), "no toll response...")
        assert_that(res_data["toll"], equal_to(int(coin_level_2 * 0.5)+coin_level_1), "response toll mismatch...")

    def test_get_unread_msg_reward_player_offline(self):
        """
        获取未读消息--验证悬赏消息(不在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "悬赏令使用者登陆:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_1 = res_data["item_id"]
        self.ar_con.capture_pet(item_id_1)
        self.ar_con.set_cultivate_pet(item_id_1)
        part_1 = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part_1)
        print "创建好友玩家:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "悬赏令使用者同意添加好友:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)
        print "好友玩家收到消息后离线:"
        self.ar_con2.get_rev()
        self.ar_con2.close()
        time.sleep(1)

        print "创建攻击者玩家:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        res = self.ar_con3.get_user_info(user_id_3)
        res_data = json.loads(res)
        coin_before = res_data["coin"]
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)
        part_3 = CoRand.get_rand_int(1, 5)
        res = self.ar_con3.upgrade_pet_part(part_3)
        res_data = json.loads(res)
        coin_after = res_data["coin"]
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_1, user_id_1)

        print "悬赏令使用高级通缉令通缉攻击者后离线:"
        self.ar_con.get_rev()
        self.ar_con.get_enemy_list()
        self.ar_con.reward_player(1, user_id_3)

        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("reward_list"), "no reward_list response...")
        assert_that(res_data["reward_list"][0], has_key("reward_id"), "no reward_id response...")
        reward_id = res_data["reward_list"][0]["reward_id"]
        self.ar_con.evil_rank_list(0)
        self.ar_con.close()
        time.sleep(1)

        print "好友玩家登陆,获取未读消息并攻击被悬赏者:"
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        res = self.ar_con2.get_unread_msg()
        res_data = json.loads(res)
        assert res_data != [], "response mismatch..."
        for i in res_data:
            assert_that(i, has_key("msg"), "no msg response...")
            assert_that(i["msg"], has_key("user_id"), "no user_id response...")
            assert_that(i["msg"]["user_id"], equal_to(user_id_1), "response user_id mismatch...")
            assert_that(i["msg"], has_key("be_reward_user_id"), "no be_reward_user_id response...")
            assert_that(i["msg"]["be_reward_user_id"], equal_to(user_id_3), "response be_reward_user_id mismatch...")
            assert_that(i["msg"], has_key("type"), "no type response...")
            assert_that(i["msg"]["type"], equal_to(6), "response type mismatch...")
            assert_that(i["msg"], has_key("reward_type"), "no reward_type response...")
            assert_that(i["msg"]["reward_type"], equal_to(1), "response reward_type mismatch...")
            assert_that(i["msg"], has_key("reward_time"), "no reward_time response...")

        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.ar_con2.attack_pet(part_3, user_id_3, reward_id)

        print "悬赏者登陆获取未读消息:"
        self.ar_con.connect_server()
        self.ar_con.login(account_id_1, "im", uc_id_1)
        res = self.ar_con.get_unread_msg()
        res_data = json.loads(res)
        assert res_data != [], "response mismatch..."
        for i in res_data:
            assert_that(i, has_key("msg"), "no msg response...")
            assert_that(i["msg"], has_key("user_id"), "no user_id response...")
            assert_that(i["msg"]["user_id"], equal_to(user_id_2), "response user_id mismatch...")
            assert_that(i["msg"], has_key("type"), "no type response...")
            assert_that(i["msg"]["type"], equal_to(5), "response type mismatch...")
            assert_that(i["msg"], has_key("attack_time"), "no attack_time response...")
            assert_that(i["msg"], has_key("reward_type"), "no reward_type response...")
            assert_that(i["msg"]["reward_type"], equal_to(1), "response reward_type mismatch...")
            assert_that(i["msg"], has_key("reward_id"), "no reward_id response...")
            assert_that(i["msg"]["reward_id"], equal_to(reward_id), "response reward_id mismatch...")
            assert_that(i["msg"], has_key("toll"), "no toll response...")
            assert_that(i["msg"]["toll"], equal_to(int((coin_before-coin_after)*0.5)), "response toll mismatch...")

    def test_get_unread_msg_del_friend_online(self):
        """
        获取未读消息:被好友删除(在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家A:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家B向A请求添加好友:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "A同意好友请求:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, 1)
        print "B收到好友同意消息:"
        self.ar_con.get_rev()
        self.ar_con2.get_friend_list()

        print "A删除好友B:"
        res = self.ar_con2.del_friend(user_id_1)
        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_SUCCESS["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]), "response msg mismatching...")
        print "B收到消息:"
        res = self.ar_con.get_rev()
        res_data = json.loads(res)
        assert_that(res_data, has_key("user_id"), "no user_id response...")
        assert_that(res_data["user_id"], equal_to(user_id_2), "response user_id mismatch...")

    def test_get_unread_msg_del_friend_offline(self):
        """
        获取未读消息:被好友删除(不在线)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家A:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        print "玩家B向A请求添加好友:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "A同意好友请求:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, 1)
        print "B收到好友同意消息后离线:"
        self.ar_con.get_rev()
        self.ar_con.get_friend_list()
        self.ar_con.close()
        time.sleep(1)

        print "A删除好友B:"
        res = self.ar_con2.del_friend(user_id_1)
        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_SUCCESS["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]), "response msg mismatching...")
        print "B登陆获取未读消息:"
        self.ar_con.connect_server()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        res = self.ar_con.get_unread_msg()
        res_data = json.loads(res)
        assert res_data != [], "response mismatch..."
        for i in res_data:
            assert_that(i, has_key("msg"), "no msg response...")
            assert_that(i["msg"], has_key("user_id"), "no user_id response...")
            assert_that(i["msg"]["user_id"], equal_to(user_id_2), "response user_id mismatch...")
class GetFriendEnergyTest(unittest.TestCase):
    def setUp(self):
        print 'start run GetFriendEnergy test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.api_name = "getFriendEnergy"
        self.account_id = 100861

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

    def test_get_friend_energy_pp_less_than_50(self):
        """
        领取体力--体力值小于50,可领取\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "玩家A登陆:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        print "创建好友玩家B:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "玩家A同意添加好友:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)
        print "玩家B赠送体力:"
        self.ar_con2.get_rev()
        self.ar_con2.give_friend_energy(user_id_1)
        print "A领取体力:"
        self.ar_con.pm_set_role_data("pp", 40)
        res = self.ar_con.get_friend_energy(user_id_2)
        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_SUCCESS["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]), "response msg mismatching...")
        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(41), "response pp mismatch...")

        res = self.ar_con.get_user_info(user_id_1)
        res_data = json.loads(res)
        assert_that(res_data, has_key("get_energy"), "no get_energy response...")
        assert_that(res_data["get_energy"], equal_to(1), "response get_energy mismatch...")

    def test_get_friend_energy_pp_50(self):
        """
        领取体力--体力值=50,不可领取\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "玩家A登陆:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        print "创建好友玩家B:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "玩家A同意添加好友:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)
        print "玩家B赠送体力:"
        self.ar_con2.get_rev()
        self.ar_con2.give_friend_energy(user_id_1)
        print "A领取体力:"
        res = self.ar_con.get_friend_energy(user_id_2)
        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_MAX_ENERGY["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_MAX_ENERGY["err_msg"]), "response msg mismatching...")
        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...")

    def test_get_friend_energy_pp_more_than_50(self):
        """
        领取体力--体力值>50,不可领取\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "玩家A登陆,修改体力值100:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "pp", 100)
        self.ar_con.gm_reload_user_data(user_id_1)
        print "创建好友玩家B:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "玩家A同意添加好友:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)
        print "玩家B赠送体力:"
        self.ar_con2.get_rev()
        self.ar_con2.give_friend_energy(user_id_1)
        print "A领取体力:"
        res = self.ar_con.get_friend_energy(user_id_2)
        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_MAX_ENERGY["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_MAX_ENERGY["err_msg"]), "response msg mismatching...")
        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(100), "response pp mismatch...")

    def test_get_friend_energy_repeat(self):
        """
        领取体力--重复领取\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "玩家A登陆:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        print "创建好友玩家B:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "玩家A同意添加好友:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)
        print "玩家B赠送体力:"
        self.ar_con2.get_rev()
        self.ar_con2.give_friend_energy(user_id_1)
        print "A重复领取体力:"
        self.ar_con.pm_set_role_data("pp", 40)
        self.ar_con.get_friend_energy(user_id_2)
        res = self.ar_con.get_friend_energy(user_id_2)
        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_ENERGY_HAD_GET["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_ENERGY_HAD_GET["err_msg"]), "response msg mismatching...")
        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(41), "response pp mismatch...")

    def test_get_friend_energy_friend_not_give(self):
        """
        领取体力--好友未赠送\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "玩家A登陆:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        print "创建好友玩家B:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "玩家A同意添加好友:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)

        print "A领取体力:"
        self.ar_con.pm_set_role_data("pp", 40)
        res = self.ar_con.get_friend_energy(user_id_2)
        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_FOUND_ENERGY["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_NOT_FOUND_ENERGY["err_msg"]), "response msg mismatching...")
        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(40), "response pp mismatch...")

    def test_get_friend_energy_not_friend(self):
        """
        领取体力--非好友\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        res = self.ar_con.login(100861, "im")
        res_data = json.loads(res)
        self.user_id = res_data["user_id"]
        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", 10)
        self.ar_con.gm_reload_user_data(user_id)
        res = self.ar_con.get_friend_energy(self.user_id)
        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_FOUND_FRIEND["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_NOT_FOUND_FRIEND["err_msg"]), "response msg mismatching...")

    def test_get_friend_energy_max_50(self):
        """
        领取体力--每天上限领取50个\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建玩家A:"
        account_id = CoRand.get_rand_int(100001)
        uc_id = CoRand.get_rand_int()
        res = self.ar_con.login(account_id, "im", uc_id)
        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)
        number = 1
        while number < 51:
            print "创建好友玩家"+str(number)+":"
            locals()['account_id_' + str(number)] = CoRand.get_rand_int(100001)
            locals()['uc_id_' + str(number)] = CoRand.get_rand_int()
            locals()['self.ar_con' + str(number)] = ARControl()
            locals()['self.ar_con' + str(number)].connect_server()
            res = locals()['self.ar_con' + str(number)].login(locals()['account_id_' + str(number)], "im",
                                                              locals()['uc_id_' + str(number)], )
            res_data = json.loads(res)
            locals()['user_id_' + str(number)] = res_data["user_id"]
            locals()['nick_name_' + str(number)] = CoRand.get_random_word_filter_sensitive(6)
            locals()['self.ar_con' + str(number)].modify_info(locals()['nick_name_' + str(number)])
            locals()['self.ar_con' + str(number)].add_friend(user_id)
            print "玩家A同意添加好友"+str(number)+":"
            self.ar_con.get_rev()
            self.ar_con.deal_add_friend(locals()['user_id_'+str(number)], 1)
            print "好友玩家"+str(number)+"赠送体力给A:"
            locals()['self.ar_con' + str(number)].get_rev()
            locals()['self.ar_con' + str(number)].give_friend_energy(user_id)
            number += 1

        print "修改玩家A体力值0,一键获取50体力:"
        self.sql = ModifySql()
        self.sql.update_user(user_id, "pp", 0)
        self.ar_con.gm_reload_user_data(user_id)
        self.ar_con.get_and_give_friends_energy()
        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...")
        print "创建好友玩家51:"
        account_id_51 = CoRand.get_rand_int(100001)
        uc_id_51 = CoRand.get_rand_int()
        self.ar_con51 = ARControl()
        self.ar_con51.connect_server()
        res = self.ar_con51.login(account_id_51, "im", uc_id_51)
        res_data = json.loads(res)
        user_id_51 = res_data["user_id"]
        self.ar_con51.add_friend(user_id)
        print "玩家A同意添加好友:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_51, 1)
        print "好友玩家51赠送体力给A:"
        self.ar_con51.get_rev()
        self.ar_con51.give_friend_energy(user_id)
        print "修改玩家A体力值0,获取第51个玩家赠送体力:"
        self.sql = ModifySql()
        self.sql.update_user(user_id, "pp", 0)
        self.ar_con.gm_reload_user_data(user_id)
        res = self.ar_con.get_friend_energy(user_id_51)
        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_MAX_GET_ENERGY["code"]), "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_MAX_GET_ENERGY["err_msg"]), "response msg mismatching...")
        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(0), "response pp mismatch...")

        res = self.ar_con.get_user_info(user_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("get_energy"), "no get_energy response...")
        assert_that(res_data["get_energy"], equal_to(50), "response get_energy mismatch...")
Пример #9
0
class GetAndGiveFriendEnergyTest(unittest.TestCase):
    def setUp(self):
        print 'start run GetAndGiveFriendEnergy test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.api_name = "getAndGiveFriendsEnergy"
        self.account_id = 100861

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

    def test_get_and_give_friend_energy_success(self):
        """
        一键领取和赠送体力-- 一键赠送和领取所有好友体力\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建玩家A:"
        account_id = CoRand.get_rand_int(100001)
        uc_id = CoRand.get_rand_int()
        res = self.ar_con.login(account_id, "im", uc_id)
        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)
        number = 1
        while number < 11:
            print "创建好友玩家" + str(number) + ":"
            locals()['account_id_' + str(number)] = CoRand.get_rand_int(100001)
            locals()['uc_id_' + str(number)] = CoRand.get_rand_int()
            locals()['self.ar_con' + str(number)] = ARControl()
            locals()['self.ar_con' + str(number)].connect_server()
            res = locals()['self.ar_con' + str(number)].login(
                locals()['account_id_' + str(number)],
                "im",
                locals()['uc_id_' + str(number)],
            )
            res_data = json.loads(res)
            locals()['user_id_' + str(number)] = res_data["user_id"]
            locals()['nick_name_' +
                     str(number)] = CoRand.get_random_word_filter_sensitive(6)
            locals()['self.ar_con' + str(number)].modify_info(
                locals()['nick_name_' + str(number)])
            locals()['self.ar_con' + str(number)].add_friend(user_id)
            print "玩家A同意添加好友" + str(number) + ":"
            self.ar_con.get_rev()
            self.ar_con.deal_add_friend(locals()['user_id_' + str(number)], 1)
            print "好友玩家" + str(number) + "赠送体力给A:"
            locals()['self.ar_con' + str(number)].get_rev()
            locals()['self.ar_con' + str(number)].give_friend_energy(user_id)
            number += 1

        print "修改玩家A体力值0,一键赠送和获取体力:"
        self.sql = ModifySql()
        self.sql.update_user(user_id, "pp", 0)
        self.ar_con.gm_reload_user_data(user_id)
        res = self.ar_con.get_and_give_friends_energy()
        res_data = json.loads(res)
        assert_that(res_data, has_key("get_pp"), "返回参数缺少get_pp")
        assert_that(res_data["get_pp"], equal_to(10), "返回参数get_pp数值错误")
        assert_that(res_data, has_key("pp"), "返回参数缺少pp")
        assert_that(res_data["pp"], equal_to(10), "返回参数pp数值错误")
        number = 1
        while number < 11:
            print "好友玩家" + str(number) + "领取体力:"
            self.sql = ModifySql()
            self.sql.update_user(locals()['user_id_' + str(number)], "pp", 10)
            self.ar_con.gm_reload_user_data(locals()['user_id_' + str(number)])
            res = locals()['self.ar_con' +
                           str(number)].get_friend_energy(user_id)
            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_SUCCESS["code"]),
                        "response code mismatching...")
            assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]),
                        "response msg mismatching...")
            number += 1

    def test_get_and_give_friend_energy_part_can_give_part_can_not_give(self):
        """
        一键领取和赠送体力--部分好友可赠送体力,部分不可赠送\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建玩家A:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        print "创建好友玩家B:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "玩家A同意添加好友B,并赠送体力:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)
        self.ar_con.give_friend_energy(user_id_2)
        print "好友B领取体力:"
        self.ar_con2.get_rev()
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "pp", 0)
        self.ar_con2.gm_reload_user_data(user_id_2)
        res = self.ar_con2.get_friend_energy(user_id_1)
        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_SUCCESS["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]),
                    "response msg mismatching...")
        print "创建好友玩家C:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        self.ar_con3.add_friend(user_id_1)
        print "玩家A同意添加好友C:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_3, 1)
        print "A一键赠送和获取体力:"
        res = self.ar_con.get_and_give_friends_energy()
        res_data = json.loads(res)
        assert_that(res_data, has_key("get_pp"), "返回参数缺少get_pp")
        assert_that(res_data["get_pp"], equal_to(0), "返回参数get_pp数值错误")
        assert_that(res_data, has_key("pp"), "返回参数缺少pp")
        assert_that(res_data["pp"], equal_to(50), "返回参数pp数值错误")
        print "好友B领取体力:"
        res = self.ar_con2.get_friend_energy(user_id_1)
        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_ENERGY_HAD_GET["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_ENERGY_HAD_GET["err_msg"]),
                    "response msg mismatching...")
        print "好友C领取体力:"
        self.ar_con3.get_rev()
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "pp", 0)
        self.ar_con3.gm_reload_user_data(user_id_3)
        res = self.ar_con3.get_friend_energy(user_id_1)
        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_SUCCESS["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]),
                    "response msg mismatching...")

    def test_get_and_give_friend_energy_no_friends(self):
        """
        一键领取和赠送体力-- 无好友\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id = CoRand.get_rand_int(100001)
        uc_id = CoRand.get_rand_int()
        res = self.ar_con.login(account_id, "im", uc_id)
        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_and_give_friends_energy()
        res_data = json.loads(res)
        assert_that(res_data, has_key("get_pp"), "返回参数缺少get_pp")
        assert_that(res_data["get_pp"], equal_to(0), "返回参数get_pp数值错误")
        assert_that(res_data, has_key("pp"), "返回参数缺少pp")
        assert_that(res_data["pp"], equal_to(50), "返回参数pp数值错误")

    def test_get_and_give_friend_energy_get_part_energy_pp_to_50(self):
        """
        一键领取和赠送体力-- 可领取体力>(50-玩家当前体力),先领取部分体力,剩余体力可下次领取\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建玩家A:"
        account_id = CoRand.get_rand_int(100001)
        uc_id = CoRand.get_rand_int()
        res = self.ar_con.login(account_id, "im", uc_id)
        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)
        number = 1
        while number < 4:
            print "创建好友玩家" + str(number) + ":"
            locals()['account_id_' + str(number)] = CoRand.get_rand_int(100001)
            locals()['uc_id_' + str(number)] = CoRand.get_rand_int()
            locals()['self.ar_con' + str(number)] = ARControl()
            locals()['self.ar_con' + str(number)].connect_server()
            res = locals()['self.ar_con' + str(number)].login(
                locals()['account_id_' + str(number)],
                "im",
                locals()['uc_id_' + str(number)],
            )
            res_data = json.loads(res)
            locals()['user_id_' + str(number)] = res_data["user_id"]
            locals()['nick_name_' +
                     str(number)] = CoRand.get_random_word_filter_sensitive(6)
            locals()['self.ar_con' + str(number)].modify_info(
                locals()['nick_name_' + str(number)])
            locals()['self.ar_con' + str(number)].add_friend(user_id)
            print "玩家A同意添加好友" + str(number) + ":"
            self.ar_con.get_rev()
            self.ar_con.deal_add_friend(locals()['user_id_' + str(number)], 1)
            print "好友玩家" + str(number) + "赠送体力给A:"
            locals()['self.ar_con' + str(number)].get_rev()
            locals()['self.ar_con' + str(number)].give_friend_energy(user_id)
            number += 1
        print "修改玩家A体力值48,一键赠送和获取体力:"
        self.sql = ModifySql()
        self.sql.update_user(user_id, "pp", 48)
        self.ar_con.gm_reload_user_data(user_id)
        res = self.ar_con.get_and_give_friends_energy()
        res_data = json.loads(res)
        assert_that(res_data, has_key("get_pp"), "返回参数缺少get_pp")
        assert_that(res_data["get_pp"], equal_to(2), "返回参数get_pp数值错误")
        assert_that(res_data, has_key("pp"), "返回参数缺少pp")
        assert_that(res_data["pp"], equal_to(50), "返回参数pp数值错误")
        print "修改玩家A体力值40,一键获取体力剩余待领取体力:"
        self.sql = ModifySql()
        self.sql.update_user(user_id, "pp", 40)
        self.ar_con.gm_reload_user_data(user_id)
        res = self.ar_con.get_and_give_friends_energy()
        res_data = json.loads(res)
        assert_that(res_data, has_key("get_pp"), "返回参数缺少get_pp")
        assert_that(res_data["get_pp"], equal_to(1), "返回参数get_pp数值错误")
        assert_that(res_data, has_key("pp"), "返回参数缺少pp")
        assert_that(res_data["pp"], equal_to(41), "返回参数pp数值错误")

    def test_get_and_give_friend_energy_get_max_50(self):
        """
        一键领取和赠送体力--每天上限领取50个\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建玩家A:"
        account_id = CoRand.get_rand_int(100001)
        uc_id = CoRand.get_rand_int()
        res = self.ar_con.login(account_id, "im", uc_id)
        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)
        number = 1
        while number < 51:
            print "创建好友玩家" + str(number) + ":"
            locals()['account_id_' + str(number)] = CoRand.get_rand_int(100001)
            locals()['uc_id_' + str(number)] = CoRand.get_rand_int()
            locals()['self.ar_con' + str(number)] = ARControl()
            locals()['self.ar_con' + str(number)].connect_server()
            res = locals()['self.ar_con' + str(number)].login(
                locals()['account_id_' + str(number)],
                "im",
                locals()['uc_id_' + str(number)],
            )
            res_data = json.loads(res)
            locals()['user_id_' + str(number)] = res_data["user_id"]
            locals()['nick_name_' +
                     str(number)] = CoRand.get_random_word_filter_sensitive(6)
            locals()['self.ar_con' + str(number)].modify_info(
                locals()['nick_name_' + str(number)])
            locals()['self.ar_con' + str(number)].add_friend(user_id)
            print "玩家A同意添加好友" + str(number) + ":"
            self.ar_con.get_rev()
            self.ar_con.deal_add_friend(locals()['user_id_' + str(number)], 1)
            print "好友玩家" + str(number) + "赠送体力给A:"
            locals()['self.ar_con' + str(number)].get_rev()
            locals()['self.ar_con' + str(number)].give_friend_energy(user_id)
            number += 1

        print "修改玩家A体力值0,一键获取50体力:"
        self.sql = ModifySql()
        self.sql.update_user(user_id, "pp", 0)
        self.ar_con.gm_reload_user_data(user_id)
        self.ar_con.get_and_give_friends_energy()
        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...")
        print "创建好友玩家51:"
        account_id_51 = CoRand.get_rand_int(100001)
        uc_id_51 = CoRand.get_rand_int()
        self.ar_con51 = ARControl()
        self.ar_con51.connect_server()
        res = self.ar_con51.login(account_id_51, "im", uc_id_51)
        res_data = json.loads(res)
        user_id_51 = res_data["user_id"]
        nick_name_51 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con51.modify_info(nick_name_51)
        self.ar_con51.add_friend(user_id)
        print "玩家A同意添加好友:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_51, 1)
        print "好友玩家51赠送体力给A:"
        self.ar_con51.get_rev()
        self.ar_con51.give_friend_energy(user_id)
        print "修改玩家A体力值0,一键获取第51个玩家赠送体力:"
        self.sql = ModifySql()
        self.sql.update_user(user_id, "pp", 0)
        self.ar_con.gm_reload_user_data(user_id)
        res = self.ar_con.get_and_give_friends_energy()
        res_data = json.loads(res)
        assert_that(res_data, has_key("get_pp"), "返回参数缺少get_pp")
        assert_that(res_data["get_pp"], equal_to(0), "返回参数get_pp数值错误")
        assert_that(res_data, has_key("pp"), "返回参数缺少pp")
        assert_that(res_data["pp"], equal_to(0), "返回参数pp数值错误")
        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(0), "response pp mismatch...")

        res = self.ar_con.get_user_info(user_id)
        res_data = json.loads(res)
        assert_that(res_data, has_key("get_energy"),
                    "no get_energy response...")
        assert_that(res_data["get_energy"], equal_to(50),
                    "response get_energy mismatch...")
class GiveFriendEnergyTest(unittest.TestCase):
    def setUp(self):
        print 'start run GiveFriendEnergy test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.api_name = "giveFriendEnergy"
        self.account_id = 100861

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

    def test_give_friend_energy_success(self):
        """
        赠送体力--当天第一次赠送,赠送成功\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "玩家A登陆:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        print "创建好友玩家B:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "玩家A同意添加好友,赠送体力:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)
        res = self.ar_con.give_friend_energy(user_id_2)
        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_SUCCESS["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]),
                    "response msg mismatching...")

        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 mismatching...")

    def test_give_friend_energy_again_one_day(self):
        """
        赠送体力--当天已赠送,好友已领取,无法再次赠送\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "玩家A登陆:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        print "创建好友玩家B:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "玩家A同意添加好友,赠送体力:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)
        res = self.ar_con.give_friend_energy(user_id_2)
        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_SUCCESS["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]),
                    "response msg mismatching...")
        print "玩家B领取体力:"
        self.ar_con2.get_rev()
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "pp", 0)
        self.ar_con.gm_reload_user_data(user_id_2)
        self.ar_con2.get_friend_energy(user_id_1)
        print "玩家A再次赠送体力:"
        res = self.ar_con.give_friend_energy(user_id_2)
        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_ENERGY_HAD_GIVE["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_ENERGY_HAD_GIVE["err_msg"]),
                    "response msg mismatching...")

    def test_give_friend_energy_give_more_than_50(self):
        """
        赠送体力--每天赠送体力无上限(测试60次)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建玩家A:"
        account_id = CoRand.get_rand_int(100001)
        uc_id = CoRand.get_rand_int()
        res = self.ar_con.login(account_id, "im", uc_id)
        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)
        number = 1
        while number < 61:
            print "创建好友玩家" + str(number) + ":"
            locals()['account_id_' + str(number)] = CoRand.get_rand_int(100001)
            locals()['uc_id_' + str(number)] = CoRand.get_rand_int()
            locals()['self.ar_con' + str(number)] = ARControl()
            locals()['self.ar_con' + str(number)].connect_server()
            res = locals()['self.ar_con' + str(number)].login(
                locals()['account_id_' + str(number)],
                "im",
                locals()['uc_id_' + str(number)],
            )
            res_data = json.loads(res)
            locals()['user_id_' + str(number)] = res_data["user_id"]
            locals()['nick_name_' +
                     str(number)] = CoRand.get_random_word_filter_sensitive(6)
            locals()['self.ar_con' + str(number)].modify_info(
                locals()['nick_name_' + str(number)])
            locals()['self.ar_con' + str(number)].add_friend(user_id)
            print "玩家A同意添加好友" + str(number) + ",并赠送体力:"
            self.ar_con.get_rev()
            self.ar_con.deal_add_friend(locals()['user_id_' + str(number)], 1)
            res = self.ar_con.give_friend_energy(locals()['user_id_' +
                                                          str(number)])
            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_SUCCESS["code"]),
                        "response code mismatching...")
            assert_that(res_data["err_msg"], equal_to(EC_SUCCESS["err_msg"]),
                        "response msg mismatching...")
            number += 1

    def test_give_friend_energy_not_friend(self):
        """
        赠送体力--赠送非好友\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.give_friend_energy(self.account_id)
        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_FOUND_FRIEND["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_NOT_FOUND_FRIEND["err_msg"]),
                    "response msg mismatching...")

    def test_give_friend_energy_not_exist(self):
        """
        赠送体力--赠送给不存在的玩家\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        user_id = CoRand.get_rand_int(100001)
        self.ar_con.login(self.account_id, "im")
        res = self.ar_con.give_friend_energy(user_id)
        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_FOUND_FRIEND["code"]),
                    "response code mismatching...")
        assert_that(res_data["err_msg"],
                    equal_to(EC_NOT_FOUND_FRIEND["err_msg"]),
                    "response msg mismatching...")
Пример #11
0
class GetEnemyListTest(unittest.TestCase):
    def setUp(self):
        print 'start run GetEnemyList test ......connect server'
        self.ar_con = ARControl()
        self.ar_con.connect_server()
        self.sql = ModifySql()
        self.api_name = "getEnemyList"
        self.account_id = 100861
        self.pet_url = "http://192.168.19.220/v0.1/static/cscommon/avatar/123456789/123456789.jpg"
        self.total_part_name = ["head", "arm", "clothes", "skirt", "shoes"]

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

    def test_attack_pet_join_enemy_list(self):
        """
        非好友玩家攻击成功,加入仇人列表(未复仇)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家A:"
        res = self.ar_con.login(account_id_1, "im")
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id = res_data["item_id"]
        self.ar_con.capture_pet(item_id)
        self.ar_con.set_cultivate_pet(item_id)
        part = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part)
        print "创建玩家B攻击A:"
        res = self.ar_con2.login(account_id_2, "im")
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name)
        res = self.ar_con2.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_2 = res_data["item_id"]
        self.ar_con2.capture_pet(item_id_2)
        self.ar_con2.set_cultivate_pet(item_id_2)
        part_2 = CoRand.get_rand_int(1, 5)
        self.ar_con2.upgrade_pet_part(part_2)
        res = self.ar_con2.get_user_info(user_id_2)
        res_data = json.loads(res)
        user2_coin_before = res_data["coin"]
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        res = self.ar_con2.attack_pet(part, user_id_1)
        res_data = json.loads(res)
        assert_that(res_data, has_key("coin"), "no coin response...")
        assert_that(res_data, has_key("win_coin"), "no win_coin response...")
        win_coin = res_data["win_coin"]
        assert_that(res_data["coin"], equal_to(user2_coin_before + win_coin),
                    "response coin mismatch...")
        print "玩家A查看仇人列表:"
        self.ar_con.get_rev()
        time.sleep(1)
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data["enemy_list"] != [], "response enemy_list mismatch..."
        user_ids = []
        for i in res_data["enemy_list"]:
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_ids.append(i["user_id"])
        assert user_id_2 in user_ids
        enemy_index = user_ids.index(user_id_2)
        assert_that(res_data["enemy_list"][enemy_index], has_key("nick_name"),
                    "no nick_name response...")
        assert_that(res_data["enemy_list"][enemy_index]["nick_name"],
                    equal_to(nick_name), "response nick_name mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("sex"),
                    "no sex response...")
        assert_that(res_data["enemy_list"][enemy_index]["sex"], equal_to(0),
                    "response sex mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("icon"),
                    "no icon response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("star"),
                    "no star response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("can_attack"),
                    "no can_attack response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("attack"),
                    "no attack response...")
        assert_that(res_data["enemy_list"][enemy_index]["attack"], equal_to(1),
                    "response attack mismatch...")

    def test_attack_pet_join_enemy_list_revenge(self):
        """
        非好友玩家攻击,玩家已复仇,从仇人列表中去除\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家A:"
        res = self.ar_con.login(account_id_1, "im")
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id = res_data["item_id"]
        self.ar_con.capture_pet(item_id)
        self.ar_con.set_cultivate_pet(item_id)
        part = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part)
        print "创建玩家B攻击A:"
        res = self.ar_con2.login(account_id_2, "im")
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name)
        res = self.ar_con2.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_2 = res_data["item_id"]
        self.ar_con2.capture_pet(item_id_2)
        self.ar_con2.set_cultivate_pet(item_id_2)
        part_2 = CoRand.get_rand_int(1, 5)
        self.ar_con2.upgrade_pet_part(part_2)
        res = self.ar_con2.get_user_info(user_id_2)
        res_data = json.loads(res)
        user2_coin_before = res_data["coin"]
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        res = self.ar_con2.attack_pet(part, user_id_1)
        res_data = json.loads(res)
        assert_that(res_data, has_key("coin"), "no coin response...")
        assert_that(res_data, has_key("win_coin"), "no win_coin response...")
        win_coin = res_data["win_coin"]
        assert_that(res_data["coin"], equal_to(user2_coin_before + win_coin),
                    "response coin mismatch...")
        print "玩家A复仇,攻击B后查看仇人列表:"
        self.ar_con.get_rev()
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data["enemy_list"] != [], "response enemy_list mismatch..."
        user_ids = []
        for i in res_data["enemy_list"]:
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_ids.append(i["user_id"])
        assert user_id_2 in user_ids
        enemy_index = user_ids.index(user_id_2)
        assert_that(res_data["enemy_list"][enemy_index], has_key("nick_name"),
                    "no nick_name response...")
        assert_that(res_data["enemy_list"][enemy_index]["nick_name"],
                    equal_to(nick_name), "response nick_name mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("sex"),
                    "no sex response...")
        assert_that(res_data["enemy_list"][enemy_index]["sex"], equal_to(0),
                    "response sex mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("icon"),
                    "no icon response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("star"),
                    "no star response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("can_attack"),
                    "no can_attack response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("attack"),
                    "no attack response...")
        assert_that(res_data["enemy_list"][enemy_index]["attack"], equal_to(1),
                    "response attack mismatch...")
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "guidance", 131071)
        self.ar_con.gm_reload_user_data(user_id_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "lottery_type", 104)
        self.ar_con.gm_reload_user_data(user_id_1)
        self.ar_con.attack_pet(part_2, user_id_2)
        time.sleep(1)
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert res_data["enemy_list"] == [], "response enemy_list mismatch..."
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data[
            "reward_list"] == [], "response reward_list mismatch..."

    def test_attack_pet_join_enemy_list_has_revenged_and_friend_reward(self):
        """
        非好友玩家攻击,玩家已复仇,且该攻击玩家被好友悬赏,查看仇人列表\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        print "创建玩家A:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id = res_data["item_id"]
        self.ar_con.capture_pet(item_id)
        self.ar_con.set_cultivate_pet(item_id)
        part = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part)
        print "创建好友玩家B:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        res = self.ar_con2.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_2 = res_data["item_id"]
        self.ar_con2.capture_pet(item_id_2)
        self.ar_con2.set_cultivate_pet(item_id_2)
        part_2 = CoRand.get_rand_int(1, 5)
        self.ar_con2.upgrade_pet_part(part_2)
        self.ar_con2.add_friend(user_id_1)
        print "A同意添加好友:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)

        print "B收到消息:"
        self.ar_con2.get_rev()
        print "创建玩家C攻击A、B:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name)
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)
        part_3 = CoRand.get_rand_int(1, 5)
        self.ar_con3.upgrade_pet_part(part_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part, user_id_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_2, user_id_2)
        print "B通缉攻击者C:"
        self.ar_con2.get_rev()
        self.ar_con2.reward_player(0, user_id_3)
        print "玩家A复仇,攻击C后查看仇人列表:"
        self.ar_con.get_rev()
        self.ar_con.get_enemy_list()
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "guidance", 131071)
        self.ar_con.gm_reload_user_data(user_id_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "lottery_type", 104)
        self.ar_con.gm_reload_user_data(user_id_1)
        self.ar_con.attack_pet(part_3, user_id_3)
        time.sleep(1)
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data["enemy_list"] != [], "response enemy_list mismatch..."
        user_ids = []
        for i in res_data["enemy_list"]:
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_ids.append(i["user_id"])
        assert user_id_3 in user_ids
        enemy_index = user_ids.index(user_id_3)
        assert_that(res_data["enemy_list"][enemy_index], has_key("nick_name"),
                    "no nick_name response...")
        assert_that(res_data["enemy_list"][enemy_index]["nick_name"],
                    equal_to(nick_name), "response nick_name mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("sex"),
                    "no sex response...")
        assert_that(res_data["enemy_list"][enemy_index]["sex"], equal_to(0),
                    "response sex mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("icon"),
                    "no icon response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("star"),
                    "no star response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("can_attack"),
                    "no can_attack response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("attack"),
                    "no attack response...")
        assert_that(res_data["enemy_list"][enemy_index]["attack"], equal_to(1),
                    "response attack mismatch...")

        assert res_data["reward_list"] != [], "response reward_list mismatch..."
        reward_player_ids = []
        for j in res_data["reward_list"]:
            assert_that(j, has_key("be_reward_user_id"),
                        "no be_reward_user_id response...")
            reward_player_ids.append(j["be_reward_user_id"])
        assert user_id_3 in reward_player_ids, "attack_user not in reward_list..."
        user_id_3_index = reward_player_ids.index(user_id_3)
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("user_id"), "no user_id response...")
        assert_that(res_data["reward_list"][user_id_3_index]["user_id"],
                    equal_to(user_id_2), "response user_id mismatch...")
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("reward_type"), "no reward_type response...")
        assert_that(res_data["reward_list"][user_id_3_index]["reward_type"],
                    equal_to(0), "response reward_type mismatch...")

    def test_attack_pet_friend(self):
        """
        好友玩家攻击成功,加入仇人列表\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家2:"
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        res = self.ar_con2.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_2 = res_data["item_id"]
        self.ar_con2.capture_pet(item_id_2)
        self.ar_con2.set_cultivate_pet(item_id_2)
        part_2 = CoRand.get_rand_int(1, 5)
        self.ar_con2.upgrade_pet_part(part_2)
        print "创建好友玩家1:"
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        self.ar_con.add_friend(user_id_2)
        print "玩家2同意添加好友:"
        self.ar_con2.get_rev()
        self.ar_con2.deal_add_friend(user_id_1, 1)
        print "玩家1执行操作:"
        self.ar_con.get_rev()
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id = res_data["item_id"]
        self.ar_con.capture_pet(item_id)
        self.ar_con.set_cultivate_pet(item_id)
        part = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part)
        print "玩家2攻击1:"
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.ar_con2.attack_pet(part, user_id_1)
        print "玩家1获取仇人列表:"
        self.ar_con.get_rev()
        time.sleep(1)
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)

        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data["enemy_list"] != [], "response enemy_list mismatch..."
        user_ids = []
        for i in res_data["enemy_list"]:
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_ids.append(i["user_id"])
        assert user_id_2 in user_ids
        enemy_index = user_ids.index(user_id_2)
        assert_that(res_data["enemy_list"][enemy_index], has_key("nick_name"),
                    "no nick_name response...")
        assert_that(res_data["enemy_list"][enemy_index]["nick_name"],
                    equal_to(nick_name_2), "response nick_name mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("sex"),
                    "no sex response...")
        assert_that(res_data["enemy_list"][enemy_index]["sex"], equal_to(0),
                    "response sex mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("icon"),
                    "no icon response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("star"),
                    "no star response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("can_attack"),
                    "no can_attack response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("attack"),
                    "no attack response...")
        assert_that(res_data["enemy_list"][enemy_index]["attack"], equal_to(1),
                    "response attack mismatch...")

    def test_get_enemy_list_reward_player_normal(self):
        """
        获取仇人列表--悬赏仇人后,加入悬赏令列表(普通通缉令)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建悬赏令使用者:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_1 = res_data["item_id"]
        self.ar_con.capture_pet(item_id_1)
        self.ar_con.set_cultivate_pet(item_id_1)
        part_1 = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part_1)

        print "创建攻击者玩家:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)
        part_3 = CoRand.get_rand_int(1, 5)
        self.ar_con3.upgrade_pet_part(part_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_1, user_id_1)
        print "悬赏令使用者获取仇人列表:"
        self.ar_con.get_rev()
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data["enemy_list"] != [], "response enemy_list mismatch..."
        user_ids = []
        for i in res_data["enemy_list"]:
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_ids.append(i["user_id"])
        assert user_id_3 in user_ids
        enemy_index = user_ids.index(user_id_3)
        assert_that(res_data["enemy_list"][enemy_index], has_key("user_id"),
                    "no user_id response...")
        assert_that(res_data["enemy_list"][enemy_index]["user_id"],
                    equal_to(user_id_3), "response user_id mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("nick_name"),
                    "no nick_name response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("sex"),
                    "no sex response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("icon"),
                    "no icon response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("star"),
                    "no star response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("can_attack"),
                    "no can_attack response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("attack"),
                    "no attack response...")
        assert_that(res_data["enemy_list"][enemy_index]["attack"], equal_to(1),
                    "response attack mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("pet_id"),
                    "no pet_id response...")

        print "悬赏令使用者通缉攻击者后,查询仇人列表:"
        self.ar_con.reward_player(0, user_id_3)
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert res_data["enemy_list"] != [], "response enemy_list mismatch..."
        user_ids = []
        for i in res_data["enemy_list"]:
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_ids.append(i["user_id"])
        assert user_id_3 in user_ids
        enemy_index = user_ids.index(user_id_3)
        assert_that(res_data["enemy_list"][enemy_index], has_key("user_id"),
                    "no user_id response...")
        assert_that(res_data["enemy_list"][enemy_index]["user_id"],
                    equal_to(user_id_3), "response user_id mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("nick_name"),
                    "no nick_name response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("sex"),
                    "no sex response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("icon"),
                    "no icon response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("star"),
                    "no star response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("can_attack"),
                    "no can_attack response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("attack"),
                    "no attack response...")
        assert_that(res_data["enemy_list"][enemy_index]["attack"], equal_to(1),
                    "response attack mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("pet_id"),
                    "no pet_id response...")

        reward_player_ids = []
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data["reward_list"] != [], "response reward_list mismatch..."
        for j in res_data["reward_list"]:
            assert_that(j, has_key("be_reward_user_id"),
                        "no be_reward_user_id response...")
            reward_player_ids.append(j["be_reward_user_id"])
        assert user_id_3 in reward_player_ids, "attack_user not in reward_list..."
        user_id_3_index = reward_player_ids.index(user_id_3)
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("user_id"), "no user_id response...")
        assert_that(res_data["reward_list"][user_id_3_index]["user_id"],
                    equal_to(user_id_1), "response user_id mismatch...")
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("reward_type"), "no reward_type response...")
        assert_that(res_data["reward_list"][user_id_3_index]["reward_type"],
                    equal_to(0), "response reward_type mismatch...")
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("end_time"), "no end_time response...")

    def test_get_enemy_list_reward_player_advance(self):
        """
        获取仇人列表---悬赏仇人后,加入悬赏令列表(高级通缉令)\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建悬赏令使用者:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_1 = res_data["item_id"]
        self.ar_con.capture_pet(item_id_1)
        self.ar_con.set_cultivate_pet(item_id_1)
        part_1 = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part_1)

        print "创建攻击者玩家:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)
        part_3 = CoRand.get_rand_int(1, 5)
        self.ar_con3.upgrade_pet_part(part_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_1, user_id_1)
        print "悬赏令使用者获取仇人列表:"
        self.ar_con.get_rev()
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data["enemy_list"] != [], "response enemy_list mismatch..."
        user_ids = []
        for i in res_data["enemy_list"]:
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_ids.append(i["user_id"])
        assert user_id_3 in user_ids
        enemy_index = user_ids.index(user_id_3)
        assert_that(res_data["enemy_list"][enemy_index], has_key("user_id"),
                    "no user_id response...")
        assert_that(res_data["enemy_list"][enemy_index]["user_id"],
                    equal_to(user_id_3), "response user_id mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("nick_name"),
                    "no nick_name response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("sex"),
                    "no sex response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("icon"),
                    "no icon response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("star"),
                    "no star response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("can_attack"),
                    "no can_attack response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("attack"),
                    "no attack response...")
        assert_that(res_data["enemy_list"][enemy_index]["attack"], equal_to(1),
                    "response attack mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("pet_id"),
                    "no pet_id response...")

        print "悬赏令使用者通缉攻击者后,查询仇人列表:"
        self.ar_con.reward_player(1, user_id_3)
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert res_data["enemy_list"] != [], "response enemy_list mismatch..."
        user_ids = []
        for i in res_data["enemy_list"]:
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_ids.append(i["user_id"])
        assert user_id_3 in user_ids
        enemy_index = user_ids.index(user_id_3)
        assert_that(res_data["enemy_list"][enemy_index], has_key("user_id"),
                    "no user_id response...")
        assert_that(res_data["enemy_list"][enemy_index]["user_id"],
                    equal_to(user_id_3), "response user_id mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("nick_name"),
                    "no nick_name response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("sex"),
                    "no sex response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("icon"),
                    "no icon response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("star"),
                    "no star response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("can_attack"),
                    "no can_attack response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("attack"),
                    "no attack response...")
        assert_that(res_data["enemy_list"][enemy_index]["attack"], equal_to(1),
                    "response attack mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("pet_id"),
                    "no pet_id response...")

        reward_player_ids = []
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data["reward_list"] != [], "response reward_list mismatch..."
        for j in res_data["reward_list"]:
            assert_that(j, has_key("be_reward_user_id"),
                        "no be_reward_user_id response...")
            reward_player_ids.append(j["be_reward_user_id"])
        assert user_id_3 in reward_player_ids, "attack_user not in reward_list..."
        user_id_3_index = reward_player_ids.index(user_id_3)
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("user_id"), "no user_id response...")
        assert_that(res_data["reward_list"][user_id_3_index]["user_id"],
                    equal_to(user_id_1), "response user_id mismatch...")
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("reward_type"), "no reward_type response...")
        assert_that(res_data["reward_list"][user_id_3_index]["reward_type"],
                    equal_to(1), "response reward_type mismatch...")
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("end_time"), "no end_time response...")

    def test_get_enemy_list_reward_player_friend(self):
        """
        获取仇人列表--被悬赏玩家加入悬赏者好友的悬赏列表\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        print "创建悬赏令使用者:"
        account_id_1 = CoRand.get_rand_int(100001)
        uc_id_1 = CoRand.get_rand_int()
        res = self.ar_con.login(account_id_1, "im", uc_id_1)
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name_1 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name_1)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_1 = res_data["item_id"]
        self.ar_con.capture_pet(item_id_1)
        self.ar_con.set_cultivate_pet(item_id_1)
        part_1 = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part_1)
        print "创建好友玩家:"
        account_id_2 = CoRand.get_rand_int(100001)
        uc_id_2 = CoRand.get_rand_int()
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        res = self.ar_con2.login(account_id_2, "im", uc_id_2)
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name_2 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name_2)
        self.ar_con2.add_friend(user_id_1)
        print "悬赏令使用者同意添加好友:"
        self.ar_con.get_rev()
        self.ar_con.deal_add_friend(user_id_2, 1)

        print "好友玩家收到消息:"
        self.ar_con2.get_rev()

        print "创建攻击者玩家:"
        account_id_3 = CoRand.get_rand_int(100001)
        uc_id_3 = CoRand.get_rand_int()
        self.ar_con3 = ARControl()
        self.ar_con3.connect_server()
        res = self.ar_con3.login(account_id_3, "im", uc_id_3)
        res_data = json.loads(res)
        user_id_3 = res_data["user_id"]
        nick_name_3 = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con3.modify_info(nick_name_3)
        res = self.ar_con3.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_3 = res_data["item_id"]
        self.ar_con3.capture_pet(item_id_3)
        self.ar_con3.set_cultivate_pet(item_id_3)
        part_3 = CoRand.get_rand_int(1, 5)
        self.ar_con3.upgrade_pet_part(part_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "guidance", 131071)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.sql = ModifySql()
        self.sql.update_user(user_id_3, "lottery_type", 104)
        self.ar_con3.gm_reload_user_data(user_id_3)
        self.ar_con3.attack_pet(part_1, user_id_1)

        print "悬赏令使用者通缉攻击者:"
        self.ar_con.get_rev()
        self.ar_con.reward_player(0, user_id_3)

        print "好友玩家收到消息:"
        self.ar_con2.get_rev()
        res = self.ar_con2.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data["reward_list"] != [], "response reward_list mismatch..."
        reward_player_ids = []
        for j in res_data["reward_list"]:
            assert_that(j, has_key("be_reward_user_id"),
                        "no be_reward_user_id response...")
            reward_player_ids.append(j["be_reward_user_id"])
        assert user_id_3 in reward_player_ids, "attack_user not in reward_list..."
        user_id_3_index = reward_player_ids.index(user_id_3)
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("reward_id"), "no reward_id response...")
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("user_id"), "no user_id response...")
        assert_that(res_data["reward_list"][user_id_3_index]["user_id"],
                    equal_to(user_id_1), "response user_id mismatch...")
        assert_that(res_data["reward_list"][user_id_3_index],
                    has_key("reward_type"), "no reward_type response...")
        assert_that(res_data["reward_list"][user_id_3_index]["reward_type"],
                    equal_to(0), "response reward_type mismatch...")

    def test_get_enemy_list_attacker_can_not_attack(self):
        """
        攻击自己的非好友玩家养成宠不可被攻击,加入仇人列表\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家A:"
        res = self.ar_con.login(account_id_1, "im")
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id = res_data["item_id"]
        self.ar_con.capture_pet(item_id)
        self.ar_con.set_cultivate_pet(item_id)
        part = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part)
        print "创建玩家B攻击A,B当前养成宠未升级,不可攻击:"
        res = self.ar_con2.login(account_id_2, "im")
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name)
        res = self.ar_con2.get_user_info(user_id_2)
        res_data = json.loads(res)
        user2_coin_before = res_data["coin"]
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        res = self.ar_con2.attack_pet(part, user_id_1)
        res_data = json.loads(res)
        assert_that(res_data, has_key("coin"), "no coin response...")
        assert_that(res_data, has_key("win_coin"), "no win_coin response...")
        win_coin = res_data["win_coin"]
        assert_that(res_data["coin"], equal_to(user2_coin_before + win_coin),
                    "response coin mismatch...")
        print "玩家A查看仇人列表:"
        self.ar_con.get_rev()
        time.sleep(1)
        res = self.ar_con.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data["enemy_list"] != [], "response enemy_list mismatch..."
        user_ids = []
        for i in res_data["enemy_list"]:
            assert_that(i, has_key("user_id"), "no user_id response...")
            user_ids.append(i["user_id"])
        assert user_id_2 in user_ids
        enemy_index = user_ids.index(user_id_2)
        assert_that(res_data["enemy_list"][enemy_index], has_key("nick_name"),
                    "no nick_name response...")
        assert_that(res_data["enemy_list"][enemy_index]["nick_name"],
                    equal_to(nick_name), "response nick_name mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("sex"),
                    "no sex response...")
        assert_that(res_data["enemy_list"][enemy_index]["sex"], equal_to(0),
                    "response sex mismatch...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("icon"),
                    "no icon response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("star"),
                    "no star response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("can_attack"),
                    "no can_attack response...")
        assert_that(res_data["enemy_list"][enemy_index], has_key("attack"),
                    "no attack response...")
        assert_that(res_data["enemy_list"][enemy_index]["attack"], equal_to(1),
                    "response attack mismatch...")

    def test_enemy_list_attack_first(self):
        """
        A攻击B,B复仇,B不加入A的仇人列表\
        开发:黄良江(900000)\
        测试:林冰晶(791099)
        """
        account_id_1 = CoRand.get_rand_int(100001)
        account_id_2 = CoRand.get_rand_int(100001)
        self.ar_con2 = ARControl()
        self.ar_con2.connect_server()
        print "创建玩家B:"
        res = self.ar_con.login(account_id_1, "im")
        res_data = json.loads(res)
        user_id_1 = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con.modify_info(nick_name)
        res = self.ar_con.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id = res_data["item_id"]
        self.ar_con.capture_pet(item_id)
        self.ar_con.set_cultivate_pet(item_id)
        part = CoRand.get_rand_int(1, 5)
        self.ar_con.upgrade_pet_part(part)
        print "创建玩家A攻击B:"
        res = self.ar_con2.login(account_id_2, "im")
        res_data = json.loads(res)
        user_id_2 = res_data["user_id"]
        nick_name = CoRand.get_random_word_filter_sensitive(6)
        self.ar_con2.modify_info(nick_name)
        res = self.ar_con2.scan_face(self.pet_url, "la", 1)
        res_data = json.loads(res)
        item_id_2 = res_data["item_id"]
        self.ar_con2.capture_pet(item_id_2)
        self.ar_con2.set_cultivate_pet(item_id_2)
        part_2 = CoRand.get_rand_int(1, 5)
        self.ar_con2.upgrade_pet_part(part_2)
        res = self.ar_con2.get_user_info(user_id_2)
        res_data = json.loads(res)
        user2_coin_before = res_data["coin"]
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "guidance", 131071)
        self.ar_con2.gm_reload_user_data(user_id_2)
        self.sql = ModifySql()
        self.sql.update_user(user_id_2, "lottery_type", 104)
        self.ar_con2.gm_reload_user_data(user_id_2)
        res = self.ar_con2.attack_pet(part, user_id_1)
        res_data = json.loads(res)
        assert_that(res_data, has_key("coin"), "no coin response...")
        assert_that(res_data, has_key("win_coin"), "no win_coin response...")
        win_coin = res_data["win_coin"]
        assert_that(res_data["coin"], equal_to(user2_coin_before + win_coin),
                    "response coin mismatch...")
        print "玩家B复仇,攻击A:"
        self.ar_con.get_rev()
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "guidance", 131071)
        self.ar_con.gm_reload_user_data(user_id_1)
        self.sql = ModifySql()
        self.sql.update_user(user_id_1, "lottery_type", 104)
        self.ar_con.gm_reload_user_data(user_id_1)
        self.ar_con.attack_pet(part_2, user_id_2)

        print "获取A的仇人列表:"
        self.ar_con2.get_rev()
        res = self.ar_con2.get_enemy_list()
        res_data = json.loads(res)
        assert_that(res_data, has_key("enemy_list"),
                    "no enemy_list response...")
        assert res_data["enemy_list"] == [], "response enemy_list mismatch..."
        assert_that(res_data, has_key("reward_list"),
                    "no reward_list response...")
        assert res_data[
            "reward_list"] == [], "response reward_list mismatch..."