def setUpClass(self):
     self.log = LogTools()
     self.yaml = YamlTools()
     self.req = RequestTools()
     self.db = DataBaseTools()
     self.log.info(
         '>>>>>>>>>>>>>>>>>>>>>[ZC_api_start]<<<<<<<<<<<<<<<<<<<<')
Beispiel #2
0
 def __init__(self):
     '''初始化'''
     datafile = os.path.join(data_path, 'Data_API.xlsx')  # 定位数据文件
     self.readexcel = ExcelReadTools(datafile)
     self.req = RequestTools()
     self.log = LogTools()
     self.db = DataBaseTools()
Beispiel #3
0
 def setUpClass(self):
     self.log = LogTools()
     self.yaml = YamlTools()
     self.req = RequestTools()
     self.db = DataBaseTools()
     self.api = CommonApiTools()
     self.api.login_api_pwd()  # 密码登陆
     self.log.info('>>>>>>>>>>>>>>>>>>>>>[PDDT_api_start]<<<<<<<<<<<<<<<<<<<<')
 def setUp(self):
     self.log = LogTools()
     self.yaml = YamlTools()
     self.req = RequestTools()
     self.db = DataBaseTools()
     self.api = CommonApiTools()
     self.log.info(
         '>>>>>>>>>>>>>>>>>>>>>[ResCode_api_start]<<<<<<<<<<<<<<<<<<<<')
Beispiel #5
0
 def __init__(self):
     # 关闭安全请求警告
     requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
     self.configread = ConfigReadTools(config_path)
     self.db = DataBaseTools()
     self.loginapi_pwd = 'https://api.linkofcar.com/WebAPI/rest/auth/authorize'
     self.loginapi_verifycode = 'https://api.linkofcar.com/WebAPI/rest/auth/validcode'
     self.logoutapi = 'https://api.linkofcar.com/WebAPI/rest/auth/logout'
     self.loginverifycode_api = 'https://api.linkofcar.com/WebAPI/rest/register/sms'
     self.headers = self.configread.get_section_item('HEADER_CONF')
     self.verify = False
class API_DL_ABNL(unittest.TestCase):
    ddt_tools=ExcelDDTTools()
    data_list=ddt_tools.get_ddt_datalist('DL')

    @classmethod
    def setUpClass(self):
        self.exceltest = ExcelDDTTools()
        self.db = DataBaseTools()
        self.log = LogTools()
        self.log.info('>>>>>>>>>>>>>>>>>>>>>[DL_api_abnl_start]<<<<<<<<<<<<<<<<<<<<')

    @classmethod
    def tearDownClass(self):
        self.db.cur_close()  # 关闭游标
        self.log.info('>>>>>>>>>>>>>>>>>>>>>[DL_api_abnl_end]<<<<<<<<<<<<<<<<<<<<<<')

    @data(*data_list)
    def test_dl_abnl(self,data):
        '''用户登录类-api接口异常情况测试'''
        self.exceltest.send_request(data)
class API_TC(unittest.TestCase):
    '''退出注销类api接口测试'''
    def setUp(self):
        self.log = LogTools()
        self.yaml = YamlTools()
        self.req = RequestTools()
        self.db = DataBaseTools()
        self.api = CommonApiTools()
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[TC_api_start]<<<<<<<<<<<<<<<<<<<<')

    def tearDown(self):
        self.db.cur_close()  #关闭游标
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[TC_api_end]<<<<<<<<<<<<<<<<<<<<<<')

    def test_1_logout(self):
        '''退出注销类-退出注销'''
        casename = '退出注销'
        api = self.yaml.get_TCapi(0)
        #获取数据
        sql1 = 'select * from userlogin;'
        userid = self.db.get_specific_data(sql1, 0, 3)
        # 发送请求
        try:
            self.api.login_api_pwd()  #先登录
            data = 'userid=%s' % userid
            result = self.req.post_method('urlencode', api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['errorMessage'], '退出登录成功!')
            self.log.info('[%s]-[Result]:PASS' % casename)
            #更新登陆状态
            sql2 = 'update userlogin set dlbz=0 where userid=\'%s\';' % userid
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            raise
class API_ZC_ABNL(unittest.TestCase):
    '''用户注册类api接口异常测试'''
    #获取测试用例数据
    ddt_tools = ExcelDDTTools()
    data_list = ddt_tools.get_ddt_datalist('ZC')

    @classmethod
    def setUpClass(self):
        self.exceltest = ExcelDDTTools()
        self.db = DataBaseTools()
        self.log = LogTools()
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[ZC_api_abnl_start]<<<<<<<<<<<<<<<<<<<<')

    @classmethod
    def tearDownClass(self):
        self.db.cur_close()  # 关闭游标
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[ZC_api_abnl_end]<<<<<<<<<<<<<<<<<<<<<<')

    @data(*data_list)  # 数据驱动
    def test_zc_abnl(self, data):
        '''用户注册类-api接口异常用例'''
        self.exceltest.send_request(data)
class API_ResCode(unittest.TestCase):
    '''校验注册验证码api接口测试'''
    def setUp(self):
        self.log = LogTools()
        self.yaml = YamlTools()
        self.req = RequestTools()
        self.db = DataBaseTools()
        self.api = CommonApiTools()
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[ResCode_api_start]<<<<<<<<<<<<<<<<<<<<')

    def tearDown(self):
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[ResCode_api_end]<<<<<<<<<<<<<<<<<<<<')

    def test_001_check_registercode(self):
        '''用户登录类-校验注册验证码'''
        casename = '校验注册验证码'
        sql = 'select * from verifycode;'
        api = self.yaml.get_DLapi(3)
        #校验注册验证码
        self.api.get_verifycode(1)
        sqldata = self.db.get_selectdata_row(sql, 1)
        #获取数据
        telnum = sqldata[0]
        res_code = sqldata[1]
        data = {'mobile': telnum, 'validcode': res_code}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['errorMessage'], '验证码正确!')
            self.log.info('[%s]-[Result]:PASS' % casename)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            raise
class API_DL(unittest.TestCase):
    '''登录类api接口测试'''
    def setUp(self):
        self.log = LogTools()
        self.yaml = YamlTools()
        self.req = RequestTools()
        self.db = DataBaseTools()
        self.api = CommonApiTools()

    def tearDown(self):
        self.db.cur_close()  # 关闭游标
        self.api.logout_api()  # 退出登陆

    def test_001_loginbypassword_uid(self):
        '''用户登录类-密码方式登陆认证(通过uid以及password进行登陆)'''
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[DL_api_start]<<<<<<<<<<<<<<<<<<<<')
        casename = '密码方式登陆认证_uid认证'
        api = self.yaml.get_DLapi(0)
        sql1 = 'select * from userlogin;'
        sql1data = self.db.get_selectdata_row(sql1, 0)
        #获取数据库数据
        zcuid = sql1data[2]
        password = sql1data[1]
        phoneid = sql1data[4]
        data = {'userid': zcuid, 'pwd': password, 'phoneid': phoneid}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
            #更新数据库信息--用户领驭号、token
            sql2='update userlogin set dlbz=1,userid=\'%s\',token=\'%s\' where phoneid=\'%s\';'\
                 %(result['result']['userid'],result['result']['token'],phoneid)
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_002_loginbypassword_mobile(self):
        '''用户登录类-密码方式登陆认证(通过mobile以及password进行登陆)'''
        casename = '密码方式登陆认证_mobile认证'
        api = self.yaml.get_DLapi(0)
        sql1 = 'select * from userlogin;'
        sql1data = self.db.get_selectdata_row(sql1, 0)
        #获取数据库数据
        mobile = sql1data[0]
        password = sql1data[1]
        phoneid = sql1data[4]
        data = {'mobile': mobile, 'pwd': password, 'phoneid': phoneid}

        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
            #更新数据库信息--用户领驭号、token
            sql2 = 'update userlogin set dlbz=1,userid=\'%s\',token=\'%s\' where phoneid=\'%s\';' \
               % (result['result']['userid'], result['result']['token'], phoneid)
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_003_loginbypassword_uid_mobile(self):
        '''用户登录类-密码方式登陆认证(通过uid、mobile以及password进行登陆)'''
        casename = '密码方式登陆认证_uid/mobile认证'
        api = self.yaml.get_DLapi(0)
        sql1 = 'select * from userlogin;'
        sql1data = self.db.get_selectdata_row(sql1, 0)
        #获取数据库数据
        zcuid = sql1data[2]
        mobile = sql1data[0]
        password = sql1data[1]
        phoneid = sql1data[4]
        data = {
            'userid': zcuid,
            'mobile': mobile,
            'pwd': password,
            'phoneid': phoneid
        }
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
            #更新数据库信息--用户领驭号、token
            sql2 = 'update userlogin set dlbz=1,userid=\'%s\',token=\'%s\' where phoneid=\'%s\';' \
               % (result['result']['userid'], result['result']['token'], phoneid)
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_004_loginbyverifycode(self):
        '''用户登录类-验证码方式登陆认证'''
        casename = '验证码方式登陆认证'
        api = self.yaml.get_DLapi(1)
        #获取登陆验证码
        self.api.get_verifycode(0)
        #获取数据库数据
        sql1 = 'select * from userlogin;'
        sql1data = self.db.get_selectdata_row(sql1, 0)
        telnum = sql1data[0]
        loginverifycode = sql1data[7]
        phoneid = sql1data[4]
        data = {
            'mobile': telnum,
            'validcode': loginverifycode,
            'phoneid': phoneid
        }

        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
            # 更新数据库信息--用户领驭号、token、登陆标志
            sql2 = 'update userlogin set dlbz=1,userid=\'%s\',token=\'%s\' where phoneid=\'%s\';' \
                   % (result['result']['userid'], result['result']['token'], phoneid)
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_005_checkmobile(self):
        '''用户登录类-检查手机号码是否注册(手机号码已经注册)'''
        casename = '检查手机号码是否注册-已经注册'
        sql = 'select * from userlogin;'
        #获取数据
        telnum = self.db.get_specific_data(sql, 0, 0)
        api = self.yaml.get_DLapi(2)
        data = {'mobile': telnum}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['errorMessage'], '该手机号码已经注册!')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_006_checkmoblie(self):
        '''用户登录类-检查手机号码是否注册(手机号码未注册)'''
        casename = '检查手机号码是否注册-未注册'
        sql = 'select * from userlogin;'
        #获取数据
        telnum = self.db.get_specific_data(sql, 1, 0)
        api = self.yaml.get_DLapi(2)
        data = {'mobile': telnum}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 10351) and self.assertEqual(
                result['isTrue'], False) and self.assertEqual(
                    result['errorMessage'], '该手机未注册')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info(
                '>>>>>>>>>>>>>>>>>>>>>[DL_api_end]<<<<<<<<<<<<<<<<<<<<<<')
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info(
                '>>>>>>>>>>>>>>>>>>>>>[DL_api_end]<<<<<<<<<<<<<<<<<<<<<<')
            raise
 def setUpClass(self):
     self.exceltest = ExcelDDTTools()
     self.db = DataBaseTools()
     self.log = LogTools()
     self.log.info('>>>>>>>>>>>>>>>>>>>>>[DL_api_abnl_start]<<<<<<<<<<<<<<<<<<<<')
Beispiel #12
0
class CommonApiTools:
    def __init__(self):
        # 关闭安全请求警告
        requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
        self.configread = ConfigReadTools(config_path)
        self.db = DataBaseTools()
        self.loginapi_pwd = 'https://api.linkofcar.com/WebAPI/rest/auth/authorize'
        self.loginapi_verifycode = 'https://api.linkofcar.com/WebAPI/rest/auth/validcode'
        self.logoutapi = 'https://api.linkofcar.com/WebAPI/rest/auth/logout'
        self.loginverifycode_api = 'https://api.linkofcar.com/WebAPI/rest/register/sms'
        self.headers = self.configread.get_section_item('HEADER_CONF')
        self.verify = False

    def login_api_pwd(self):
        '''登陆接口(密码验证)'''
        sql1 = 'select * from userlogin;'
        #获取数据库数据
        zcuid = self.db.get_specific_data(sql1, 0, 2)
        mobile = self.db.get_specific_data(sql1, 0, 0)
        password = self.db.get_specific_data(sql1, 0, 1)
        phoneid = self.db.get_specific_data(sql1, 0, 4)
        data = {
            'userid': zcuid,
            'mobile': mobile,
            'pwd': password,
            'phoneid': phoneid
        }
        req = requests.get(url=self.loginapi_pwd,
                           headers=self.headers,
                           params=data,
                           verify=self.verify)
        result = req.json()
        # 更新数据库信息--用户领驭号、token、登陆标志
        sql2 = 'update userlogin set dlbz=1,userid=\'%s\',token=\'%s\' where phoneid=\'%s\';' \
        % (result['result']['userid'], result['result']['token'], phoneid)
        self.db.execute_sql(sql2)

    def login_api_verifycode(self):
        '''登陆接口(验证码登陆)'''
        sql1 = 'select * from userlogin;'
        #先申请登录验证码
        self.get_verifycode(0)
        #获取数据库数据
        telnum = self.db.get_specific_data(sql1, 0, 0)
        loginverifycode = self.db.get_specific_data(sql1, 0, 7)
        phoneid = self.db.get_specific_data(sql1, 0, 4)
        data = {
            'mobile': telnum,
            'validcode': loginverifycode,
            'phoneid': phoneid
        }
        req = requests.get(url=self.loginapi_verifycode,
                           headers=self.headers,
                           params=data,
                           verify=self.verify)
        result = req.json()
        # 更新数据库信息--用户领驭号、token、登陆标志
        sql2 = 'update userlogin set dlbz=1,userid=\'%s\',token=\'%s\' where phoneid=\'%s\';' \
               % (result['result']['userid'], result['result']['token'], phoneid)
        self.db.execute_sql(sql2)

    def get_verifycode(self, type):
        '''
        获取验证码,type为1为注册验证码,type为0为登录验证码
        :param type:0-登录验证码,1-注册验证码
        '''
        sql1 = 'select * from userlogin;'
        sql2 = 'select * from verifycode;'
        #获取数据库数据
        telnum1 = self.db.get_specific_data(sql1, 0, 0)  #已经注册的手机号码
        telnum2 = self.db.get_specific_data(sql2, 1, 0)  #未注册的手机号码

        #注册验证码
        if type == 1:
            data = {'mobile': telnum2, 'isregister': 1}
            req = requests.get(url=self.loginverifycode_api,
                               headers=self.headers,
                               params=data,
                               verify=self.verify)
            result = req.json()
            #更新数据库信息--注册验证码
            sql2 = 'update verifycode set verifycode=\'%s\' where telnum=\'%s\';' % (
                result['result'], telnum2)
            self.db.execute_sql(sql2)

        #登陆验证码
        elif type == 0:
            data = {'mobile': telnum1, 'isregister': 0}
            req = requests.get(url=self.loginverifycode_api,
                               headers=self.headers,
                               params=data,
                               verify=self.verify)
            result = req.json()
            #更新数据库信息--登陆验证码
            sql3 = 'update userlogin set loginverifycode=\'%s\' where telnum=\'%s\';' % (
                result['result'], telnum1)
            self.db.execute_sql(sql3)

    def logout_api(self):
        '''注销退出接口(urlencode)'''
        sql1 = 'select * from userlogin;'
        #获取userid
        userid = self.db.get_specific_data(sql1, 0, 3)
        url = self.logoutapi + '?' + 'userid=%s' % userid
        try:
            req = requests.post(url=url,
                                headers=self.headers,
                                verify=self.verify)
            result = req.json()
            if result['errorCode'] == 0 and result['isTrue'] == True:
                pass
            #更新登陆状态标志
            sql2 = 'update userlogin set dlbz=0 where userid=\'%s\';' % userid
            self.db.execute_sql(sql2)
        except Exception as e:
            print('注销退出错误,具体错误:%s' % e)
class API_HY(unittest.TestCase):
    '''好友类api接口测试'''
    @classmethod
    def setUpClass(self):
        self.log = LogTools()
        self.yaml = YamlTools()
        self.req = RequestTools()
        self.db = DataBaseTools()
        self.api = CommonApiTools()
        self.api.login_api_pwd()  # 密码登陆
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[HY_api_start]<<<<<<<<<<<<<<<<<<<<')

    @classmethod
    def tearDownClass(self):
        self.api.logout_api()  # 注销退出
        self.log.info('>>>>>>>>>>>>>>>>>>>>>[HY_api_end]<<<<<<<<<<<<<<<<<<<<')

    def test_001_friendsinfo_userid(self):
        '''好友类-获取好友信息(通过userid)'''
        casename = '获取好友信息-userid'
        api = self.yaml.get_HYapi(6)
        sql = 'select * from userlogin;'
        #获取数据
        sqldata = self.db.get_selectdata_row(sql, 0)
        userid = sqldata[3]
        token = sqldata[6]
        data = {'userid': userid, 'token': token}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['result']['userid'], userid)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_002_friendinfo_mobile(self):
        '''好友类-获取好友信息(通过mobile)'''
        casename = '获取好友信息-mobile'
        api = self.yaml.get_HYapi(6)
        sql = 'select * from userlogin;'
        #获取数据
        sqldata = self.db.get_selectdata_row(sql, 0)
        token = sqldata[6]
        mobile = sqldata[0]
        data = {'token': token, 'mobile': mobile}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['result']['mobile'], mobile)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_003_friendinfo_useridmobile(self):
        '''好友类-获取好友信息(通过userid/mobile)'''
        casename = '获取好友信息-userid/mobile'
        api = self.yaml.get_HYapi(6)
        sql = 'select * from userlogin;'
        #获取数据
        sqldata = self.db.get_selectdata_row(sql, 0)
        token = sqldata[6]
        userid = sqldata[3]
        mobile = sqldata[0]
        data = {'token': token, 'userid': userid, 'mobile': mobile}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(
                result['errorCode'], 0) and self.assertSequenceEqual(
                    result['isTrue'], True) and self.assertSequenceEqual(
                        result['result']['userid'],
                        userid) and self.assertSequenceEqual(
                            result['result']['mobile'], mobile)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_004_addfriends(self):
        '''好友类-向指定用户申请成为好友'''
        casename = '向指定用户申请成为好友'
        api = self.yaml.get_HYapi(0)
        sql = 'select * from userlogin;'
        #获取数据
        sqldata = self.db.get_selectdata_row(sql, 0)
        token = sqldata[6]
        friendid = 'user10020'
        info = '123'
        data = 'token=%s&friendid=%s&info=%s' % ('123456', friendid, info)
        #发送请求
        try:
            result = self.req.put_method(api, casename, data=data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertSequenceEqual(
                    result['errorMessage'], '申请成功,请耐心等待对方确认。')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_005_myaddlist(self):
        '''好友类-取得向我提出加好友申请的用户列表'''
        casename = '获取添加自己的用户列表'
        api = self.yaml.get_HYapi(1)
        sql = 'select * from userlogin;'
        #获取数据
        sqldata = self.db.get_selectdata_row(sql, 0)
        token = sqldata[6]
        userid = sqldata[3]
        data = {'token': '123456', 'userid': userid}
        #发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 10304) and self.assertEqual(
                result['isTrue'], False) and self.assertSequenceEqual(
                    result['errorMessage'], '用户不存在')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_006_deletefriend(self):
        '''好友类-删除指定好友'''
        casename = '删除指定好友'
        api = self.yaml.get_HYapi(5)
        sql = 'select * from userlogin;'
        #获取数据
        sqldata = self.db.get_selectdata_row(sql, 0)
        token = sqldata[6]
        friendid = 'user10001'
        data = 'token=%s&friendid=%s' % (token, friendid)
        #发送请求
        try:
            result = self.req.delete_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['errorMessage'], '删除好友成功')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_007_getfriendslist(self):
        '''好友类-获得我的好友列表'''
        casename = '获得我的好友列表'
        api = self.yaml.get_HYapi(7)
        sql = 'select * from userlogin;'
        #获取数据
        sqldata = self.db.get_selectdata_row(sql, 0)
        token = sqldata[6]
        userid = sqldata[3]
        data = {'token': token, 'userid': userid}
        #发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 10306) and self.assertEqual(
                result['errorMessage'], '好友不存在')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_008_nickname(self):
        '''好友类-为我的好友设置昵称'''
        casename = '为我的好友设置昵称'
        api = self.yaml.get_HYapi(8)
        sql = 'select * from userlogin;'
        #获取数据
        sqldata = self.db.get_selectdata_row(sql, 0)
        token = sqldata[6]
        userid = sqldata[3]
        friendid = 'user10033'
        name = '戴眼镜的熊'
        data = 'token=%s&friendid=%s&name=%s' % (token, friendid, name)
        #发送请求
        try:
            result = self.req.put_method(api, casename, data=data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['errorMessage'], '更新昵称成功')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_009_newmessage(self):
        '''好友类-取得待处理好友消息'''
        casename = '取得待处理好友消息'
        api = self.yaml.get_HYapi(11)
        sql = 'select * from userlogin;'
        #获取数据
        token = self.db.get_specific_data(sql, 0, 6)
        data = {'token': token}
        #发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 10811) and self.assertEqual(
                result['errorMessage'], '没有新的朋友消息')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_010_search(self):
        '''好友类-搜索引擎'''
        casename = '搜索引擎'
        api = self.yaml.get_HYapi(12)
        sql = 'select * from userlogin;'
        #获取数据
        token = self.db.get_specific_data(sql, 0, 6)
        type = 'all'
        key = '王'
        data = {'token': token, 'type': type, 'key': key}
        #发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            raise
class API_HDGGYY(unittest.TestCase):
    '''活动广告运营api接口测试'''
    @classmethod
    def setUpClass(self):
        self.log = LogTools()
        self.yaml = YamlTools()
        self.req = RequestTools()
        self.db = DataBaseTools()
        self.api = CommonApiTools()
        self.api.login_api_pwd()  # 密码登陆
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[SJCJ_api_start]<<<<<<<<<<<<<<<<<<<<')

    @classmethod
    def tearDownClass(self):
        self.api.logout_api()  # 注销退出
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[SJCJ_api_end]<<<<<<<<<<<<<<<<<<<<')

    def test_001_getadv(self):
        '''活动广告运营类-取得当前用户相关的广告列表'''
        casename = '获取当前用户广告列表'
        api = self.yaml.get_HDGGYYapi(0)
        sql = 'select * from userlogin;'
        #获取数据
        token = self.db.get_specific_data(sql, 0, 6)
        data = {'token': token}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_002_signin(self):
        '''活动广告运营类-用户签到,并获得连续打卡天数'''
        casename = '获取用户连续打卡天数'
        api = self.yaml.get_HDGGYYapi(1)
        sql = 'select * from userlogin;'
        # 获取数据
        token = self.db.get_specific_data(sql, 0, 6)
        data = 'token=%s' % token
        # 发送请求
        try:
            result = self.req.post_method('urlencode', api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_003_sendfeedback(self):
        '''活动广告运营类-用户提交问题建议'''
        casename = '用户提交问题建议'
        api = self.yaml.get_HDGGYYapi(2)
        sql = 'select * from userlogin;'
        #获取数据
        userid = self.db.get_specific_data(sql, 0, 3)
        contactinfo = 'QQ:14298246'
        content = '接口测试!'
        data = {
            'userid': userid,
            'contactinfo': contactinfo,
            'content': content
        }
        # 发送请求
        try:
            result = self.req.post_method('json', api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['result'], userid)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_004_getfeedback(self):
        '''活动广告运营类-用户取得自己提交的问题的反馈'''
        casename = '用户取得自己提交的问题的反馈'
        api = self.yaml.get_HDGGYYapi(3)
        sql = 'select * from userlogin;'
        #获取数据
        token = self.db.get_specific_data(sql, 0, 6)
        data = {'token': token}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
            #更新数据库信息
            sql2 = 'update feedback set feedid=\'%s\' where userid=\'%s\';' % (
                result['result'][0]['feedid'], result['result'][0]['userid'])
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_005_gettrack(self):
        '''活动广告运营类-获取建议回复信息'''
        casename = '获取建议回复信息'
        api = self.yaml.get_HDGGYYapi(4)
        sql = 'select * from feedback;'
        #获取数据
        feedid = self.db.get_specific_data(sql, 0, 2)
        data = {'feedid': feedid}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_006_givestar(self):
        '''活动广告运营类-给予客服评级'''
        casename = '给予客服评级'
        api = self.yaml.get_HDGGYYapi(5)
        sql = 'select * from feedback;'
        #获取数据
        feedid = self.db.get_specific_data(sql, 0, 2)
        rate = random.randint(1, 6)  #1-5星评级
        data = 'feedid=%s&rate=%s' % (feedid, rate)
        # 发送请求
        try:
            result = self.req.put_method(api, casename, data=data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            raise
 def setUp(self):
     self.log = LogTools()
     self.yaml = YamlTools()
     self.req = RequestTools()
     self.db = DataBaseTools()
     self.api = CommonApiTools()
Beispiel #16
0
class API_PDDT(unittest.TestCase):
    '''频道电台类api接口测试'''
    @classmethod
    def setUpClass(self):
        self.log = LogTools()
        self.yaml = YamlTools()
        self.req = RequestTools()
        self.db = DataBaseTools()
        self.api = CommonApiTools()
        self.api.login_api_pwd()  # 密码登陆
        self.log.info('>>>>>>>>>>>>>>>>>>>>>[PDDT_api_start]<<<<<<<<<<<<<<<<<<<<')

    @classmethod
    def tearDownClass(self):
        self.api.logout_api()  # 注销退出
        self.log.info('>>>>>>>>>>>>>>>>>>>>>[PDDT_api_end]<<<<<<<<<<<<<<<<<<<<')

    def test_001_makechannel(self):
        '''频道电台类-创建频道(普通频道)'''
        casename='创建频道(普通频道)'
        api=self.yaml.get_PDDTapi(0)
        sql='select * from userlogin;'
        #获取数据
        sqldata=self.db.get_selectdata_row(sql,0)
        token=sqldata[6]
        userid=sqldata[3]
        data={"channelid" : "","channelname" : "接口测试","channelremark" : "","autoname" : 0,"ispublic" : 0,"logoid" : "","memberids" : ["user10400","user10430"],"owner" : userid,"token" : token}
        #发送请求
        try:
            result=self.req.post_method('json',api,casename,data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)
            self.log.info('[%s]-[Result]:PASS'%casename)
            self.log.info('-'*60)
            #更新数据库信息--channel
            sql2='update channel set channelid=\'%s\',owner=\'%s\',token=\'%s\',channelname=\'%s\' where cid=1'%\
                 (result['result']['channelid'],result['result']['owner'],result['result']['token'],result['result']['channelname'])
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            self.log.info('-'*60)
            raise

    def test_002_changenickname(self):
        '''频道电台类-更新自己的昵称'''
        casename='更新自己的昵称'
        api=self.yaml.get_PDDTapi(1)
        sql='select * from channel;'
        #获取数据
        sqldata=self.db.get_selectdata_row(sql,0)
        token=sqldata[3]
        channelid=sqldata[1]
        userid=sqldata[2]
        name='王大锤'
        data='token=%s&channelid=%s&name=%s'%(token,channelid,name)
        #发送请求
        try:
            result=self.req.put_method(api,casename,data=data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) and self.assertEqual(result['result'],userid)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            self.log.info('-'*60)
            raise

    def test_003_changechannelname(self):
        '''频道电台类-管理员更新频道名称'''
        casename='管理员更新频道名称'
        api=self.yaml.get_PDDTapi(2)
        sql='select * from channel;'
        #获取数据
        sqldata=self.db.get_selectdata_row(sql,0)
        token=sqldata[3]
        channelid=sqldata[1]
        userid=sqldata[2]
        name='我心飞翔'
        data='token=%s&channelid=%s&name=%s'%(token,channelid,name)
        #发送请求
        try:
            result=self.req.put_method(api,casename,data=data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) and self.assertEqual(result['result'],userid)
            self.log.info('[%s]-[nfResult]:PASS'%casename)
            self.log.info('-'*60)
            #更新数据库--channel
            sql2='update channel set channelname=\'%s\' where owner=\'%s\';'%(name,userid)
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            self.log.info('-' * 60)
            raise

    def test_004_changeremark(self):
        '''频道电台类-管理员更新频道简介'''
        casename='管理员更新频道简介'
        api=self.yaml.get_PDDTapi(3)
        sql='select * from channel;'
        #获取数据
        sqldata=self.db.get_selectdata_row(sql,0)
        token=sqldata[3]
        channelid=sqldata[1]
        userid=sqldata[2]
        remark='简介更新,接口测试!'
        data='token=%s&channelid=%s&remark=%s'%(token,channelid,remark)
        #发送请求
        try:
            result=self.req.put_method(api,casename,data=data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) and self.assertEqual(result['result'],userid)
            self.log.info('[%s]-[Result]:PASS'%casename)
            self.log.info('-'*60)
            #更新数据库--channel
            sql2='update channel set remark=\'%s\' where owner=\'%s\';'%(remark,userid)
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            self.log.info('-'*60)
            raise

    def test_005_ispublic_yes(self):
        '''频道电台类-管理员更新频道不需验证申请'''
        casename='管理员更新频道不需验证申请'
        api=self.yaml.get_PDDTapi(4)
        sql='select * from channel;'
        # 获取数据
        sqldata=self.db.get_selectdata_row(sql, 0)
        token=sqldata[3]
        channelid=sqldata[1]
        userid=sqldata[2]
        ispublic=1
        data='token=%s&channelid=%s&ispublic=%s'%(token,channelid,ispublic)
        #发送请求
        try:
            result=self.req.put_method(api,casename,data=data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) and \
            self.assertEqual(result['errorMessage'],'更新频道成功') and self.assertSequenceEqual(result['result'],userid)
            self.log.info('[%s]-[Result]:PASS'%casename)
            self.log.info('-'*60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            self.log.info('-'*60)
            raise

    def test_006_ispublic_no(self):
        '''频道电台类-管理员更新频道需要验证申请'''
        casename = '管理员更新频道需要验证申请'
        api = self.yaml.get_PDDTapi(4)
        sql = 'select * from channel;'
        # 获取数据
        sqldata = self.db.get_selectdata_row(sql, 0)
        token = sqldata[3]
        channelid = sqldata[1]
        userid = sqldata[2]
        ispublic = 0
        data = 'token=%s&channelid=%s&ispublic=%s' % (token, channelid, ispublic)
        # 发送请求
        try:
            result = self.req.put_method(api, casename, data=data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) and \
            self.assertEqual(result['errorMessage'], '更新频道成功') and self.assertSequenceEqual(result['result'], userid)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_007_batchadd(self):
        '''频道电台类-批量增加成员到频道中'''
        casename='批量增加成员到频道中'
        api=self.yaml.get_PDDTapi(6)
        sql='select * from channel;'
        #获取数据
        sqldata=self.db.get_selectdata_row(sql,0)
        token=sqldata[3]
        channelid=sqldata[1]
        userid=sqldata[2]
        body={"channelid" : channelid,"memberlist" : ["user10400","user10430"],"userid" : userid,"token" : token}
        #发送请求
        try:
            result=self.req.put_method(api,casename,body)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True) \
            and self.assertEqual(result['result'],userid)
            self.log.info('[%s]-[Result]:PASS'%casename)
            self.log.info('-'*60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            self.log.info('-'*60)
            raise

    def test_008_batchkick(self):
        '''频道电台类-从频道中批量删除成员'''
        casename='从频道中批量删除成员'
        api=self.yaml.get_PDDTapi(7)
        sql='select * from channel;'
        #获取数据
        sqldata=self.db.get_selectdata_row(sql,0)
        token=sqldata[3]
        userid=sqldata[2]
        channelid=sqldata[1]
        body={"channelid" : channelid,"memberlist" : ["user10400","user10430"],"userid" : userid,"token" : token}
        #发送请求
        try:
            result=self.req.delete_method(api,casename,body=body)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \
            and self.assertEqual(result['result'], userid)
            self.log.info('[%s]-[Result]:PASS'%casename)
            self.log.info('-'*60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            self.log.info('-'*60)
            raise

    def test_009_applychannel(self):
        '''频道电台类-申请加入频道(需审核)'''
        casename='申请加入频道(需审核)'
        api=self.yaml.get_PDDTapi(8)
        sql = 'select * from channel;'
        # 获取数据
        sqldata = self.db.get_selectdata_row(sql, 0)
        token=sqldata[3]
        userid=sqldata[2]
        channelid='10404'
        reason='申请加入,接口测试!'
        data='token=%s&channelid=%s&reason=%s'%(token,channelid,reason)
        try:
            result=self.req.put_method(api,casename,data=data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \
            and self.assertEqual(result['result'], userid)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_010_addchannel(self):
        '''频道电台类-直接加入频道'''
        casename='直接加入频道'
        api=self.yaml.get_PDDTapi(9)
        sql='select * from channel;'
        #获取数据
        sqldata = self.db.get_selectdata_row(sql, 0)
        token = sqldata[3]
        userid = sqldata[2]
        channelid='10404'
        data='token=%s&channelid=%s'%(token,channelid)
        #发送请求
        try:
            result=self.req.put_method(api,casename,data=data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \
            and self.assertEqual(result['result'], userid)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_011_getmychannellist(self):
        '''频道电台类-取得自己的频道列表'''
        casename='取得我的频道列表'
        api=self.yaml.get_PDDTapi(14)
        sql='select * from channel;'
        #获取数据
        token=self.db.get_specific_data(sql,0,3)
        data={'token':token}
        #发送请求
        try:
            result=self.req.get_method(api,casename,data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)\
            and self.assertEqual(result['errorMessage'],'操作成功')
            self.log.info('[%s]-[Result]:PASS'%casename)
            self.log.info('-'*60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            self.log.info('-'*60)
            raise

    def test_012_getmember(self):
        '''频道电台类-取得指定频道的成员列表'''
        casename='取得指定频道的成员列表'
        api=self.yaml.get_PDDTapi(15)
        sql='select * from channel;'
        #获取数据
        sqldata=self.db.get_selectdata_row(sql,0)
        token=sqldata[3]
        channelid=sqldata[1]
        data={'token':token,'channelid':channelid}
        #发送请求
        try:
            result=self.req.get_method(api,casename,data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)\
            and self.assertEqual(result['errorMessage'],'操作成功')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_013_applylist(self):
        '''频道电台类-获取所有自己创建的频道的相关信息'''
        casename='所有自己创建的频道的相关信息'
        api=self.yaml.get_PDDTapi(16)
        sql='select * from channel;'
        #获取数据
        token=self.db.get_specific_data(sql,0,3)
        data={'token':token}
        #发送请求
        try:
            result=self.req.get_method(api,casename,data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \
            and self.assertEqual(result['errorMessage'], '操作成功')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_014_searchchannel(self):
        '''频道电台类-查找频道'''
        casename='查找频道'
        api=self.yaml.get_PDDTapi(17)
        sql='select * from channel;'
        #获取数据
        token=self.db.get_specific_data(sql,0,3)
        key='罗'
        data={'token':token,'key':key}
        #发送请求
        try:
            result=self.req.get_method(api,casename,data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'])
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_015_randomrecommend(self):
        '''频道电台类-随机推荐频道'''
        casename='随机推荐频道'
        api=self.yaml.get_PDDTapi(18)
        sql='select * from channel;'
        #获取数据
        token=self.db.get_specific_data(sql,0,3)
        maxnum=3
        data={'token':token,'maxnum':maxnum}
        #发送请求
        try:
            result=self.req.get_method(api,casename,data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'])
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_016_getchannelinfo(self):
        '''频道电台类-获取指定频道详情'''
        casename='获取指定频道详情'
        api=self.yaml.get_PDDTapi(19)
        sql='select * from channel;'
        #获取数据
        sqldata=self.db.get_selectdata_row(sql,0)
        token=sqldata[3]
        channelid=sqldata[1]
        data={'token':token,'channelid':channelid}
        #发送请求
        try:
            result=self.req.get_method(api,casename,data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)\
            and self.assertEqual(result['errorMessage'],'操作成功')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_017_getchannelstatus(self):
        '''频道电台类-用户取得自己的频道的活跃统计'''
        casename='用户取得自己的频道的活跃统计'
        api=self.yaml.get_PDDTapi(21)
        sql='select * from channel;'
        #获取数据
        token=self.db.get_specific_data(sql,0,3)
        data={'token':token}
        #发送请求
        try:
            result=self.req.get_method(api,casename,data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \
            and self.assertEqual(result['errorMessage'], '操作成功')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_018_getlogo(self):
        '''频道电台类-获取频道logo图片'''
        casename='获取频道logo图片'
        api=self.yaml.get_PDDTapi(22)
        #获取数据
        channelid='10404'
        data={'channelid':channelid}
        #发送请求
        try:
            result=self.req.get_method(api,casename,data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)
            self.log.info('[%s]-[Result]:PASS'%casename)
            self.log.info('-'*60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            self.log.info('-'*60)
            raise

    def test_019_assertinchannel(self):
        '''频道电台类-判断自己是否在特定频道内'''
        casename='判断自己是否在特定频道内'
        api=self.yaml.get_PDDTapi(23)
        sql='select * from channel;'
        #获取数据
        sqldata=self.db.get_selectdata_row(sql,0)
        token=sqldata[3]
        channelid=sqldata[1]
        data={'token':token,'channelid':channelid}
        #发送请求
        try:
            result=self.req.get_method(api,casename,data)
            #存在时反馈判断
            try:
                self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)\
                and self.assertEqual(result['result'],True)
                self.log.info('[%s]-[Result]:PASS'%casename)
                self.log.info('-'*60)
            #不存在时反馈判断
            except:
                self.assertEqual(result['errorCode'], 0) and self.assertEqual(result['isTrue'], True) \
                and self.assertEqual(result['result'], False)
                self.log.info('[%s]-[Result]:PASS' % casename)
                self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            self.log.info('-'*60)
            raise

    def test_020_allmember(self):
        '''频道电台类-取得和我相关的所有频道和频道成员列表(不包含自己)'''
        casename='取得和我相关的所有频道和频道成员列表(不包含自己)'
        api=self.yaml.get_PDDTapi(26)
        sql='select * from channel;'
        #获取数据
        token=self.db.get_specific_data(sql,0,3)
        data={'token':'234123414'}
        #发送请求
        try:
            result=self.req.get_method(api,casename,data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)\
            and self.assertEqual(result['errorMessage'],'操作成功')
            self.log.info('[%s]-[Result]:PASS'%casename)
            self.log.info('-'*60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            self.log.info('-'*60)
            raise

    def test_021_radionews(self):
        '''频道电台类-获取最新路况交通新闻'''
        casename='获取最新路况交通新闻'
        api=self.yaml.get_PDDTapi(27)
        sql='select * from channel;'
        #获取数据
        userid=self.db.get_specific_data(sql,0,2)
        data={'userid':userid}
        #发送请求
        try:
            result=self.req.get_method(api,casename,data)
            self.assertEqual(result['errorCode'],0) and self.assertEqual(result['isTrue'],True)
            self.log.info('[%s]-[Result]:PASS'%casename)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED'%casename)
            raise
Beispiel #17
0
class API_SJCJ(unittest.TestCase):
    '''数据采集类api接口测试'''
    @classmethod
    def setUpClass(self):
        self.log = LogTools()
        self.yaml = YamlTools()
        self.req = RequestTools()
        self.db = DataBaseTools()
        self.api = CommonApiTools()
        self.api.login_api_pwd()  # 密码登陆
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[SJCJ_api_start]<<<<<<<<<<<<<<<<<<<<')

    @classmethod
    def tearDownClass(self):
        self.api.logout_api()  # 注销退出
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[SJCJ_api_end]<<<<<<<<<<<<<<<<<<<<')

    def test_001_position(self):
        '''数据采集类-提交用户位置信息'''
        casename = '提交用户位置信息'
        api = self.yaml.get_SJCJapi(0)
        sql = 'select * from userlogin;'
        #获取数据信息
        userid = self.db.get_specific_data(sql, 0, 3)
        longitude = '126.23435'  #经度
        latitude = '31.4343'  #纬度
        body = {'userid': userid, 'longitude': longitude, 'latitude': latitude}

        # 发送请求
        try:
            result = self.req.put_method(api, casename, body)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['errorMessage'], '信息更新成功')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_002_mobileinfo(self):
        '''数据采集类-提交用户手机信息'''
        casename = '提交用户手机信息'
        api = self.yaml.get_SJCJapi(1)
        sql = 'select * from userlogin;'
        #获取数据信息
        phoneid = self.db.get_specific_data(sql, 0, 4)
        phonetype = 0  #0:为ios,1:为android,2:为其它
        detail = {
            'brand': 'Iphone',
            'version': '6',
            '运营商': '中国电信',
            'osversion': 'ios12'
        }
        #配置参数
        body = {'phoneid': phoneid, 'phonetype': phonetype, 'detail': detail}

        # 发送请求
        try:
            result = self.req.put_method(api, casename, body)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['errorMessage'], '信息更新成功')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
            raise

    def test_003_networkflow(self):
        '''数据采集类-提交用户使用流量信息'''
        casename = '提交用户使用流量信息'
        api = self.yaml.get_SJCJapi(2)
        sql = 'select * from userlogin;'
        #获取数据信息--整行
        sqldata = self.db.get_selectdata_row(sql, 0)
        #获取单个数据信息
        userid = sqldata[3]
        phoneid = sqldata[4]
        starttime = '1487727617982'  #统计开始时间,单位:毫秒数
        endtime = '1487727634678'  #统计截止时间,单位:毫秒数
        flow = 34434388  #使用的3G/4G流量(不含WiFi),单位:字节Byte
        navtime = 2103  #导航功能实际使用时间(不含目的地搜索和路线规划时间);单位:秒
        chattime = 107  #使用对讲功能的时间(不含聊天机器人,不计算听别人说话的时间);单位:秒
        usetime = 5609  #使用嘟嘟的时间(app启动开始计算,切换或者关掉则停止计算);单位:秒
        sharetimes = 4  #分享图片的次数;单位:次数
        data = {
            'userid': userid,
            'starttime': starttime,
            'endtime': endtime,
            'phoneid': phoneid,
            'flow': flow,
            'navtime': navtime,
            'chattime': chattime,
            'usetime': usetime,
            'sharetimes': sharetimes
        }
        # 发送请求
        try:
            result = self.req.post_method('json', api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['errorMessage'], '信息更新成功')
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_004_deletefile(self):
        '''数据采集类-用户删除上传到服务器的文件'''
        casename = '用户删除上传到服务器的文件'
        api = self.yaml.get_SJCJapi(5)
        sql = 'select * from userlogin;'
        #获取数据
        userid = self.db.get_specific_data(sql, 0, 3)
        fileid = 'mro6vatc6fgflnrj54nqtixlyvn21r1r'
        data = 'userid=%s&fileid=%s' % (userid, fileid)
        # 发送请求
        try:
            result = self.req.delete_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            raise
class API_USER(unittest.TestCase):
    '''用户类api接口测试'''
    @classmethod
    def setUpClass(self):
        self.log = LogTools()
        self.yaml = YamlTools()
        self.req = RequestTools()
        self.db = DataBaseTools()
        self.api = CommonApiTools()
        self.api.login_api_pwd()  #密码登陆
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[USER_api_start]<<<<<<<<<<<<<<<<<<<<')

    @classmethod
    def tearDownClass(self):
        self.api.logout_api()  #注销退出
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[USER_api_end]<<<<<<<<<<<<<<<<<<<<')

    def test_001_getuserinfo_byuserid(self):
        '''用户类-获取用户公开信息(通过userid)'''
        casename = '获取用户公开信息-通过userid'
        api = self.yaml.get_USERapi(0)
        sql = 'select * from userlogin;'
        #获取数据库信息
        sqldata = self.db.get_selectdata_row(sql, 0)
        userid = sqldata[3]
        mobile = sqldata[0]
        data = {'userid': userid}
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['result']['mobile'], mobile)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_002_getuserinfo_bymobile(self):
        '''用户类-获取用户公开信息(通过mobile)'''
        casename = '获取用户公开信息-通过mobile'
        api = self.yaml.get_USERapi(0)
        sql = 'select * from userlogin;'
        sqldata = self.db.get_selectdata_row(sql, 0)
        userid = sqldata[3]
        mobile = sqldata[0]
        data = {'mobile': mobile}
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['result']['userid'], userid)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_003_getuserinfo_byall(self):
        '''用户类-获取用户公开信息(通过userid和mobile)'''
        casename = '获取用户公开信息-通过userid/mobile'
        api = self.yaml.get_USERapi(0)
        sql = 'select * from userlogin;'
        sqldata = self.db.get_selectdata_row(sql, 0)
        userid = sqldata[3]
        mobile = sqldata[0]
        data = {'userid': userid, 'mobile': mobile}
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True) and self.assertEqual(
                    result['result']['mobile'], mobile)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_004_updateinfo(self):
        '''用户类-更新用户信息'''
        casename = '更新用户信息'
        api = self.yaml.get_USERapi(2)
        sql1 = 'select * from userlogin;'
        sql1data = self.db.get_selectdata_row(sql1, 0)
        #获取数据信息
        userid = sql1data[3]
        mobile = sql1data[0]
        username = sql1data[8]
        city = 'ChengDu'
        phoneid = sql1data[4]
        jpushregisterid = 'lzl198903017'
        password = sql1data[1]
        gendor = random.randint(0, 3)
        introduction = 'Hello!I am bear,I am doing api autotest!'
        body = {
            'userid': userid,
            'mobile': mobile,
            'username': username,
            'city': city,
            'phoneid': phoneid,
            'jpushregisterid': jpushregisterid,
            'password': password,
            'gendor': gendor,
            'introduction': introduction
        }
        try:
            result = self.req.put_method(api, casename, body)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], 0)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
            #更新数据库--userinfo
            sql2='update userinfo set userid=\'%s\',username=\'%s\',mobile=\'%s\',city=\'%s\',phoneid=\'%s\',' \
                 'jpushregisterid=\'%s\',password=\'%s\',gendor=\'%d\',introduction=\'%s\' where infoid=1;'\
                 %(userid,username,mobile,city,phoneid,jpushregisterid,password,gendor,introduction)
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_005_uploadcontacts(self):
        '''用户类-上传通讯录'''
        casename = '上传通讯录'
        api = self.yaml.get_USERapi(5)
        sql = 'select * from userlogin;'
        #配置数据
        token = self.db.get_specific_data(sql, 0, 6)
        contactslist = [{
            'mobile': '13828836568',
            'name': 'feifei'
        }, {
            'mobile': '13921342314',
            'name': 'nannan'
        }]
        contactsjson = json.dumps(contactslist)
        data = 'token=%s' % token
        try:
            result = self.req.post_method('urlencode', api, casename, data,
                                          contactsjson)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_006_getcontacts(self):
        '''用户类-获取用户通讯录'''
        casename = '获取用户通讯录'
        api = self.yaml.get_USERapi(6)
        sql = 'select * from userlogin;'
        #配置数据
        token = self.db.get_specific_data(sql, 0, 6)
        data = {'token': token}
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s-[Result]:FAILED]' % casename)
            self.log.info('-' * 60)
            raise

    def test_007_finduser(self):
        '''用户类-查找嘟嘟用户'''
        casename = '查找嘟嘟用户'
        api = self.yaml.get_USERapi(1)
        sql = 'select * from userlogin;'
        #配置数据
        token = self.db.get_specific_data(sql, 0, 6)
        key = '王'
        data = {'token': token, 'key': key}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_008_updateintroduction(self):
        '''用户类-更新签名信息'''
        casename = '更新签名信息'
        api = self.yaml.get_USERapi(3)
        sql1 = 'select * from userlogin;'
        #获取数据信息
        token = self.db.get_specific_data(sql1, 0, 6)
        introduction = '好好学习,天天向上!'
        data = 'token=%s&introduction=%s' % (token, introduction)
        # 发送请求
        try:
            result = self.req.put_method(api, casename, data=data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_009_bindbluetooth(self):
        '''用户类-更新绑定蓝牙'''
        casename = '更新绑定蓝牙'
        api = self.yaml.get_USERapi(7)
        sql = 'select * from userlogin;'
        #获取数据信息
        token = self.db.get_specific_data(sql, 0, 6)
        bluetooth = '5065832AD0A9'
        data = 'token=%s&bluetooth=%s' % (token, bluetooth)
        # 发送请求
        try:
            result = self.req.put_method(api, casename, data=data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_010_unbindbluetooth(self):
        '''用户类-取消绑定蓝牙'''
        casename = '取消绑定蓝牙'
        api = self.yaml.get_USERapi(7)
        sql = 'select * from userlogin;'
        #获取数据信息
        token = self.db.get_specific_data(sql, 0, 6)
        bluetooth = ''
        data = 'token=%s&bluetooth=%s' % (token, bluetooth)
        # 发送请求
        try:
            result = self.req.put_method(api, casename, data=data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
            raise

    def test_011_updateoftenplace(self):
        '''用户类-更新我的导航收藏'''
        casename = '更新我的导航收藏'
        api = self.yaml.get_USERapi(8)
        sql = 'select * from userlogin;'
        #获取数据信息
        userid = self.db.get_specific_data(sql, 0, 3)
        bodylist = [{
            "title": "公司",
            "address": "月光流域",
            "datatype": "history",
            "longitude": "123.422",
            "latitude": "22.2322",
            "updatetime": 2122212122
        }, {
            "title": "家",
            "address": "华侨城",
            "datatype": "favorite",
            "longitude": "123.4",
            "latitude": "22.23",
            "updatetime": 21212122
        }]
        data = 'userid=%s' % userid
        # 发送请求
        try:
            result = self.req.put_method(api, casename, bodylist, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_012_getoftenplace(self):
        '''用户类-获取我的导航收藏'''
        casename = '获取我的导航收藏'
        api = self.yaml.get_USERapi(9)
        sql = 'select * from userlogin;'
        #获取数据信息
        userid = self.db.get_specific_data(sql, 0, 3)
        data = {'userid': userid}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_013_updatechatrecord(self):
        '''用户类-更新会话记录'''
        casename = '更新会话记录'
        api = self.yaml.get_USERapi(10)
        sql = 'select * from userlogin;'
        #获取数据信息
        userid = self.db.get_specific_data(sql, 0, 3)
        bodylist = [{
            "type": "channel",
            "objid": "10012",
            "objname": "中华大帝国频道",
            "logourl":
            "http://120.76.194.47:8888/group1/M00/00/05/eEzCL1haOg_Ew5gSAACvGaRuld0687.png",
            "chattime": 21222121
        }]
        data = 'userid=%s' % userid
        # 发送请求
        try:
            result = self.req.put_method(api,
                                         casename,
                                         body=bodylist,
                                         data=data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_014_getchatrecord(self):
        '''用户类-获取会话记录'''
        casename = '获取会话记录'
        api = self.yaml.get_USERapi(11)
        sql = 'select * from userlogin;'
        #获取数据信息
        userid = self.db.get_specific_data(sql, 0, 3)
        data = {'userid': userid}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_015_chatrecord_add(self):
        '''用户类-更新会话增量模式--新增会话记录'''
        casename = '更新会话增量模式--新增会话记录'
        api = self.yaml.get_USERapi(12)
        sql = 'select * from userlogin;'
        #获取数据信息
        userid = self.db.get_specific_data(sql, 0, 3)
        mode = 'i'
        bodylist = [{
            "type": "channel",
            "objid": "10012",
            "objname": "中华大帝国频道",
            "logourl":
            "http://120.76.194.47:8888/group1/M00/00/05/eEzCL1haOg_Ew5gSAACvGaRuld0687.png",
            "chattime": 21222121
        }]
        #配置参数
        data = 'userid=%s&mode=%s' % (userid, mode)
        # 发送请求
        try:
            result = self.req.put_method(api, casename, bodylist, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_016_chatrecord_update(self):
        '''用户类-更新会话增量模式--更新会话记录'''
        casename = '更新会话增量模式--更新会话记录'
        api = self.yaml.get_USERapi(12)
        sql = 'select * from userlogin;'
        #获取数据信息
        userid = self.db.get_specific_data(sql, 0, 3)
        mode = 'u'
        bodylist = [{
            "type": "channel",
            "objid": "10012",
            "objname": "中华大帝国频道",
            "logourl":
            "http://120.76.194.47:8888/group1/M00/00/05/eEzCL1haOg_Ew5gSAACvGaRuld0687.png",
            "chattime": 21222233
        }]
        #配置参数
        data = 'userid=%s&mode=%s' % (userid, mode)
        # 发送请求
        try:
            result = self.req.put_method(api, casename, bodylist, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_017_chatrecord_delete(self):
        '''用户类-更新会话增量模式--删除会话记录'''
        casename = '更新会话增量模式--删除会话记录'
        api = self.yaml.get_USERapi(12)
        sql = 'select * from userlogin;'
        #获取数据信息
        userid = self.db.get_specific_data(sql, 0, 3)
        mode = 'd'
        bodylist = [{
            "type": "channel",
            "objid": "10012",
            "objname": "中华大帝国频道",
            "logourl":
            "http://120.76.194.47:8888/group1/M00/00/05/eEzCL1haOg_Ew5gSAACvGaRuld0687.png",
            "chattime": 21222233
        }]
        #配置参数
        data = 'userid=%s&mode=%s' % (userid, mode)
        # 发送请求
        try:
            result = self.req.put_method(api, casename, bodylist, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            raise
Beispiel #19
0
class ExcelDDTTools:
    def __init__(self):
        '''初始化'''
        datafile = os.path.join(data_path, 'Data_API.xlsx')  # 定位数据文件
        self.readexcel = ExcelReadTools(datafile)
        self.req = RequestTools()
        self.log = LogTools()
        self.db = DataBaseTools()

    def get_ddt_datalist(self,sheetname):
        '''
        获取指定sheet内的所有数据,并组合成ddt_data列表
        :param sheetname: sheet表
        :return: ddt_datalist
        '''
        ddt_datalist=[]
        nrows=self.readexcel.get_nrows(sheetname)
        for i in range(1,nrows):
            param_dict=self._get_param_dict(sheetname,i)
            ddt_datalist.append(param_dict)
        return ddt_datalist

    def _read_sheet(self,sheetname):
        '''
        读取指定sheet中的每行的数据信息并保存在字典中
        :param sheetname: sheet名称
        :return: 返回一个装有对应sheet的所有参数数据字典
        '''
        data_dict={}
        #获取指定sheet的行数
        getrows=self.readexcel.get_nrows(sheetname)
        #获取每行的值
        for i in range(1,getrows):
            get_data=self.readexcel.get_row_values(sheetname,i)     #获取当行
            data_dict[i]=get_data                                   #行数:参数值
        return data_dict

    def _get_param_dict(self,sheetname,key):
        '''
        获取data_dict中指定key对应的参数
        :param data_dict: 数据字典
        :param key: key值(1、2、3...)
        :return: 参数字典
        '''
        param_dict={}
        data_dict=self._read_sheet(sheetname)
        param_list=data_dict[key]
        #获取token值
        sql='select token from userlogin where telnum=17318971827;'
        token=self.db.get_selectdata_row(sql,0)
        #获取参数组合成字典
        param_dict['test_class']=param_list[0]
        param_dict['test_title']=param_list[1]
        param_dict['api']=param_list[2]
        param_dict['request_type']=param_list[3]
        param_dict['post_type']=param_list[4]
        param_dict['url_param']=param_list[5]
        param_dict['data_param']=param_list[6]
        param_dict['headers']=param_list[7]
        param_dict['errorCode']=param_list[8]
        param_dict['isTrue']=param_list[9]
        param_dict['errorMessage']=param_list[10]
        param_dict['token']=token[0]
        return param_dict

    def send_request(self,param_dict):
        '''
        根据参数字典发送请求
        :param param_dict : 参数字典
        :param worksheet : 工作sheet
        '''
        #获取参数字典各类参数值
        test_class=param_dict['test_class']
        test_title=param_dict['test_title']
        api=param_dict['api']
        request_type=param_dict['request_type']
        post_type=param_dict['post_type']
        url_param=param_dict['url_param']
        data_param=param_dict['data_param']
        headers=param_dict['headers']
        errorCode=param_dict['errorCode']
        isTrue=param_dict['isTrue']
        errorMessage=param_dict['errorMessage']

        #转换url_param参数
        if url_param=='':
            url_param=None
        elif '=' in url_param:
            url_param=url_param
        else:
            url_param=eval(url_param)
        #转换data_param参数
        if data_param=='':
            data_param=None
        else:
            data_param=eval(data_param)
        #转换errorCode'
        errorCode=int(errorCode)
        #转换isTrue参数
        if isTrue == 'True':
            isTrue = True
        elif isTrue == 'False':
            isTrue = False

        #判断发送类型并调用请求函数
        #get请求
        if request_type=='get':
            #发送请求
            try:
                result=self.req.get_method(api,test_title,url_param)
                #返回数据判断
                assert result['errorCode']==errorCode
                assert result['isTrue']==isTrue
                assert result['errorMessage']==errorMessage
                self.log.info('[%s]-[Result]:PASS'%test_title)
                self.log.info('-'*60)
            except Exception:
                self.log.error('[%s]-[Result]:FAILED' % test_title)
                self.log.info('-' * 60)
                raise
        #put请求
        elif request_type=='put':
            #发送请求
            try:
                result=self.req.put_method(api,test_title,data_param,url_param)
                # 返回数据判断
                assert result['errorCode'] == errorCode
                assert result['isTrue'] == isTrue
                assert result['errorMessage'] == errorMessage
                self.log.info('[%s]-[Result]:PASS' % test_title)
                self.log.info('-' * 60)
            except Exception:
                self.log.error('[%s]-[Result]:FAILED' % test_title)
                self.log.info('-' * 60)
                raise
        #delete请求
        elif request_type=='delete':
            #发送请求
            try:
                result=self.req.delete_method(api,test_title,url_param)
                # 返回数据判断
                assert result['errorCode'] == errorCode
                assert result['isTrue'] == isTrue
                assert result['errorMessage'] == errorMessage
                self.log.info('[%s]-[Result]:PASS' % test_title)
                self.log.info('-' * 60)
            except Exception:
                self.log.error('[%s]-[Result]:FAILED' % test_title)
                self.log.info('-' * 60)
                raise
        #post请求
        elif request_type=='post':
            # post类型为urlencode
            if post_type=='urlencode':
                try:
                    result=self.req.post_method('urlencode',api,test_title,data_param,url_param)
                    #返回数据判断
                    assert result['errorCode'] == errorCode
                    assert result['isTrue'] == isTrue
                    assert result['errorMessage'] == errorMessage
                    self.log.info('[%s]-[Result]:PASS' % test_title)
                    self.log.info('-' * 60)
                except Exception:
                    self.log.error('[%s]-[Result]:FAILED' % test_title)
                    self.log.info('-' * 60)
                    raise
            # post类型为form
            elif post_type=='form':
                try:
                    result=self.req.post_method('form',api,test_title,data_param,url_param)
                    # 返回数据判断
                    assert result['errorCode'] == errorCode
                    assert result['isTrue'] == isTrue
                    assert result['errorMessage'] == errorMessage
                    self.log.info('[%s]-[Result]:PASS' % test_title)
                    self.log.info('-' * 60)
                except Exception:
                    self.log.error('[%s]-[Result]:FAILED' % test_title)
                    self.log.info('-' * 60)
                    raise
            # post类型为json
            elif post_type=='json':
                try:
                    result=self.req.post_method('json',api,test_title,data_param,url_param)
                    # 返回数据判断
                    assert result['errorCode'] == errorCode
                    assert result['isTrue'] == isTrue
                    assert result['errorMessage'] == errorMessage
                    self.log.info('[%s]-[Result]:PASS' % test_title)
                    self.log.info('-' * 60)
                except Exception:
                    self.log.error('[%s]-[Result]:FAILED' % test_title)
                    self.log.info('-' * 60)
                    raise
            else:
                print('POST请求类型设置错误!')
class API_ZC(unittest.TestCase):
    '''注册类api接口测试'''
    @classmethod
    def setUpClass(self):
        self.log = LogTools()
        self.yaml = YamlTools()
        self.req = RequestTools()
        self.db = DataBaseTools()
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[ZC_api_start]<<<<<<<<<<<<<<<<<<<<')

    @classmethod
    def tearDownClass(self):
        self.db.cur_close()  #关闭游标
        self.log.info(
            '>>>>>>>>>>>>>>>>>>>>>[ZC_api_end]<<<<<<<<<<<<<<<<<<<<<<')

    def test_001_getfzcid(self):
        '''获取非注册用户标识id'''
        casename = '获取非注册用户标识id'
        sql1 = 'select * from userregister;'
        phoneid = self.db.get_specific_data(sql1, 0, 6)  #从数据库中获取手机号码数据
        api = self.yaml.get_ZCapi(0)
        data = {'phoneid': phoneid}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
            #更新数据库fzcuid字段
            sql2 = 'update userregister set fzcuid=\'%s\' where phoneid=\'%s\'' % (
                result['result'], phoneid)
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_002_getverifycode(self):
        '''获取验证码'''
        casename = '获取验证码'
        api = self.yaml.get_ZCapi(2)
        sql1 = 'select * from verifycode;'
        telnum = self.db.get_specific_data(sql1, 0, 0)  #从数据库中获取手机号数据
        data = {'mobile': telnum, 'isregister': 1}
        # 发送请求
        try:
            result = self.req.get_method(api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            self.log.info('-' * 60)
            #更新数据库verifycode字段
            sql2 = 'update verifycode set verifycode=\'%s\' where telnum=\'%s\'' % (
                result['result'], telnum)
            self.db.execute_sql(sql2)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            self.log.info('-' * 60)
            raise

    def test_003_register(self):
        '''正式注册'''
        casename = '正式注册'
        api = self.yaml.get_ZCapi(1)
        sql1 = 'select * from userregister;'
        sql2 = 'select * from verifycode;'
        #获取数据信息--tuple
        sql1data = self.db.get_selectdata_row(sql1, 0)
        sql2data = self.db.get_selectdata_row(sql2, 0)
        #获取数据库数据信息
        username = sql1data[1]
        password = sql1data[3]
        fzcuid = sql1data[4]
        telnum = sql2data[0]
        verifycode = sql2data[1]
        data = {
            "userid": fzcuid,
            "username": username,
            "mobile": telnum,
            "password": password,
            "validcode": verifycode
        }

        # 发送请求
        try:
            result = self.req.post_method('json', api, casename, data)
            self.assertEqual(result['errorCode'], 0) and self.assertEqual(
                result['isTrue'], True)
            self.log.info('[%s]-[Result]:PASS' % casename)
            #更新数据库内容--注册领驭号
            sql3 = 'update userregister set zcuid=\'%s\' where telnum=\'%s\';' % (
                result['result'], telnum)
            sql4 = 'update userlogin set zcuid=\'%s\' where telnum=\'%s\';' % (
                result['result'], telnum)
            #更新用户注册状态
            sql5 = 'update userregister set zcbz=1 where telnum=\'%s\';' % telnum
            self.db.execute_sql(sql3)
            self.db.execute_sql(sql4)
            self.db.execute_sql(sql5)
        except Exception:
            self.log.error('[%s]-[Result]:FAILED' % casename)
            raise