Exemplo n.º 1
0
 def api_key(self):
     param = self.__sign
     if self.test_envir == 0:
         res = base_request(method='post', url="http://m-dev.jzb.com/user/login/v2016", body_data=param)
     elif self.test_envir == 1:
         res = base_request(method='post', url="http://m.jzb.com/user/login/v2016", body_data=param)
     else:
         res = None
     try:
         auth = res.json().get('res').get('api_key')
         return auth
     except:
         print('测试环境选择错误!环境选择举例:test_envir=TestEnvir.TEST')
Exemplo n.º 2
0
def a2():
    url = '{}/homepage/measureQuery?user_req_id=df8f71ac8x16cd0fe4c36'.format(
        ua)
    data = [{
        "measures": [
            "goodsIssueAmount", "goodsIssueCount", "firstTransCustAmount",
            "firstTransCustCount", "firstTransCustPrice", "oldTransCustCount",
            "oldTransCustAmount", "oldTransCustPrice", "grossMargin",
            "salesRevenue", "goodsReturnCount", "goodsReturnAmount",
            "stockoutAndReciptCount", "agoStockoutAndReciptCount",
            "replenishedStockoutCount", "replenishedReceiptCount",
            "stockoutUnreceiptCount", "receiptUnstockoutCount",
            "unstockoutUnreceiptCount", "totalPaymentApCount",
            "totalPaymentApAmount", "goodsReceiptAmount", "goodsReceiptCount",
            "prepaidPaymentArCount", "prepaidPaymentArAmount",
            "cashPaymentArCount", "cashPaymentArAmount",
            "arrearsPaymentArCount", "arrearsPaymentArAmount",
            "totalPaymentArAmount", "totalPaymentArCount", "revenueAmount",
            "revenueCount", "expenseAmount", "expenseCount", "stockOutAmount",
            "stockOutCount", "stockInAmount", "stockInCount",
            "stockTransferCount", "stockCountCount", "stockCountSubCount"
        ],
        "time":
        "20190101,20191231"
    }]
    r = baseRequest.base_request('post',
                                 url,
                                 headers=headers,
                                 data=data,
                                 timeout=60)
    return round(r.elapsed.total_seconds(), 2)
Exemplo n.º 3
0
def get_vrf_params():
    """获取vrf请求头必须参数"""
    res = base_request(method='get',
                       url='http://aitools.dev.jzb.com/getVrfToken')
    oj_info = res.json().get('objects')
    pinus = oj_info.get('pinus')
    x_identity_code = oj_info.get('X-Identity-Code')
    return {'pinus': pinus, 'X-Identity-Code': x_identity_code}
Exemplo n.º 4
0
def push_text(res_msg, access_token, send_all=False):
    """
    钉钉推送
    :param res_msg: list()
    :param access_token: list()
    :param send_all: 是否群发
    :return:
    """
    url = 'https://oapi.dingtalk.com/robot/send?access_token=%s' % access_token
    # content_with_img = '# 构建失败\n![screenshot](https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2934092001,3164812011&fm=26&gp=0.jpg)\n\n' \
    #                    '>#### 失败原因:%s\n\n>%s' % (result, cw)
    # data_with_img = {
    #     "msgtype": "markdown",
    #     "markdown": {"title": "后端业务监控",
    #                  "text": content_with_img
    #                  },
    #     "at": {
    #         "atMobiles": [
    #             "134xxxxxxxx"
    #         ],
    #         "isAtAll": False
    #     }
    # }
    temp = ""
    for i in range(len(res_msg)):
        if i == 0:
            temp += '%s\n' % res_msg[i]
            continue
        temp += '-->%s\n\n' % res_msg[i]

    content = temp + cw
    data = {
        "msgtype": "text",
        "text": {
            "content": content
        },
        "at": {
            "atMobiles": [""],
            "isAtAll": send_all
        }
    }
    base_request(method='post',
                 url=url,
                 body_data=data,
                 body_type=BodyType.JSON)
Exemplo n.º 5
0
 def login_new(self):
     """750+版本登录"""
     if self.test_envir == 1:
         url = 'https://passport.jzb.com/login?v=7.55&ver=7.55&channel=website&deviceId=ffffffff-c7a8-b0f1-0000-0000265bc76d&deviceType=MIX_2&deviceVersion=8.0.0'
         data = {'uname': 'JZB150', 'passwd': 'g9a6y5e4'}
         res = base_request(method='post', url=url, body_data=data)
         return res
     else:
         pass
Exemplo n.º 6
0
 def login_1(self):
     url = '{}/mobile/cia/graphql?user_req_id=1568705092426_198'.format(
         self.host_addr)
     data = {
         "query":
         "\n    fragment OrgType on Org {\n        id\n        name\n        account\n        isInitial\n "
         "   }\n\n    fragment AppSubscribeType on AppSubscription {\n        status\n        startDate\n "
         "       endDate\n        license\n        org {\n            ...OrgType\n        }\n    }\n\n    "
         "mutation Login($username: String!, $password: String!) {\n        createToken(username: "******"$username, password: $password) {\n            accessToken\n            refreshToken\n          "
         "  viewer {\n                id\n                name\n                headPicture(size: "
         "MIDDLE)\n                mobile\n                email\n                orgId\n                "
         "defaultOrg {\n                    ...OrgType\n                }\n                defaultAppOrg{"
         "\n                    ...OrgType\n                }\n                orgs {\n                   "
         " ...OrgType\n                }\n                appSubscribes {\n                    "
         "...AppSubscribeType\n                }\n                #                subscribes {\n         "
         "       #                    status\n                #                    startDate\n            "
         "    #                    endDate\n                #                    license\n                "
         "#                    appId\n                #                    appName\n                #     "
         "               org {\n                #                        id\n                #            "
         "            name\n                #                        account\n                #           "
         "             isInitial\n                #                        logo\n                #        "
         "            }\n                #                }\n            }\n        }\n    }\n",
         "variables": {
             "username": self.username,
             "password": self.password
         },
         "mutation":
         "\n    fragment OrgType on Org {\n        id\n        name\n        account\n        "
         "isInitial\n    }\n\n    fragment AppSubscribeType on AppSubscription {\n        status\n     "
         "   startDate\n        endDate\n        license\n        org {\n            ...OrgType\n      "
         "  }\n    }\n\n    mutation Login($username: String!, $password: String!) {\n        "
         "createToken(username: $username, password: $password) {\n            accessToken\n           "
         " refreshToken\n            viewer {\n                id\n                name\n              "
         "  headPicture(size: MIDDLE)\n                mobile\n                email\n                "
         "orgId\n                defaultOrg {\n                    ...OrgType\n                }\n     "
         "           defaultAppOrg{\n                    ...OrgType\n                }\n               "
         " orgs {\n                    ...OrgType\n                }\n                appSubscribes {"
         "\n                    ...AppSubscribeType\n                }\n                #              "
         "  subscribes {\n                #                    status\n                #               "
         "     startDate\n                #                    endDate\n                #              "
         "      license\n                #                    appId\n                #                 "
         "   appName\n                #                    org {\n                #                    "
         "    id\n                #                        name\n                #                     "
         "   account\n                #                        isInitial\n                #            "
         "            logo\n                #                    }\n                #                "
         "}\n            }\n        }\n    }\n "
     }
     json_r = baseRequest.base_request('post', url, data=data).json()
     return json_r
Exemplo n.º 7
0
def jyls():
    url = '{}/data/grid/SummaryOperatingJournal.operation-flow?user_req_id=df8f61f3ax16cd1b6546e'.format(
        ua)
    data = {
        "pageSize": 0,
        "take": 0,
        "sort": [],
        "bindVars": {
            "v0": "20190801",
            "v1": "20190831"
        },
        "group": [],
        "criteriaStr": "id >= :v0 and id <= :v1"
    }
    r = baseRequest.base_request('post',
                                 url,
                                 headers=headers,
                                 data=data,
                                 timeout=60)
    return round(r.elapsed.total_seconds(), 2)
Exemplo n.º 8
0
 def auth(self):
     url = '{}/mobile/cia/graphql?user_req_id=1566209020090_4'.format(
         self.url)
     data = {
         "query":
         '\n            mutation CreatePassport {\n                passport: '
         'createPassportWithAccessToken(accessToken: "%s", domainName: "%s")\n            }\n        '
         % (self.access_token_, self.do.get('orgAccount')),
         "mutation":
         '\n            mutation CreatePassport {\n                passport: '
         'createPassportWithAccessToken(accessToken: "%s", domainName: "%s")\n            }\n '
         % (self.access_token_, self.do.get('orgAccount'))
     }
     headers = {'accesstoken': self.access_token_}
     json_r = baseRequest.base_request('post',
                                       url,
                                       data=data,
                                       headers=headers).json()
     passport = json_r.get('data').get('passport')
     return passport
Exemplo n.º 9
0
def a8():
    url = '{}/data/grid/StockIn.voucher?user_req_id=df8f71ac8x16cd12ff69c'.format(
        ua)
    data = {
        "pageSize": 50,
        "take": 50,
        "skip": 0,
        "page": 1,
        "sort": [],
        "bindVars": {},
        "group": [],
        "criteriaStr":
        "bizDate >= DATE(20190101) AND bizDate < DATE_ADD(DATE('20191231'),INTERVAL 1 DAY)",
        "havingStr": ""
    }
    r = baseRequest.base_request('post',
                                 url,
                                 headers=headers,
                                 data=data,
                                 timeout=60)
    return round(r.elapsed.total_seconds(), 2)
Exemplo n.º 10
0
def a3():
    url = '{}/data/grid/GoodsIssue.voucher?user_req_id=df8f71ac8x16cd11c8014'.format(
        ua)
    data = {
        "pageSize": 50,
        "take": 50,
        "skip": 0,
        "page": 1,
        "sort": [],
        "bindVars": {},
        "group": [],
        "criteriaStr":
        "bizDate >= DATE(20190101) AND bizDate < DATE_ADD(DATE('20191231'),INTERVAL 1 DAY) AND SYSDATE() > 0 AND redBlueFlagEnum='BLUE'",
        "havingStr": ""
    }
    r = baseRequest.base_request('post',
                                 url,
                                 headers=headers,
                                 data=data,
                                 timeout=70)
    return round(r.elapsed.total_seconds(), 2)
Exemplo n.º 11
0
 def login_2(self):
     url = '{}/mobile/cia/graphql?user_req_id=1566209018073_1'.format(
         self.host_addr)
     data = {
         "query":
         "\n            query getDefaultAccountBook {\n                accountBook: getDefaultAccountBook "
         "{\n                    isDefault\n                    tenant{\n                        id\n     "
         "                   name\n                        code\n                        domainName\n     "
         "                   createdStamp\n                        isHidden\n                        "
         "disabled\n                        enterpriseId\n                        org{\n                  "
         "          orgId\n                            orgName\n                            orgFullName\n "
         "                           orgAccount\n                        }\n                    }\n       "
         "         }\n            }\n        ",
         "variables": {}
     }
     headers = {'accesstoken': self.access_token_}
     json_r = baseRequest.base_request('post',
                                       url,
                                       data=data,
                                       headers=headers).json()
     return json_r
Exemplo n.º 12
0
    def upload_data(self):
        imgs = self.img_list
        random_img = random.choice(imgs)  # 随机选取list中一个元素

        with open('%s/%s' % (self.img_dir, random_img), 'rb') as f:
            file = {
                'image':
                ('%s' % random_img, f, 'image/%s' % random_img.split('.')[1]),
                'isimage':
                '1'
            }
            file = MultipartEncoder(file)
            headers = {'Content-Type': file.content_type}
            headers.update(self.headers)
            self.logger.info("请求头信息:")
            self.logger.info("{}".format(headers))
            self.logger.info("请求体类型:{}".format(self.body_type))
            self.logger.info("请求体内容:{}".format(file))
            res = base_request(method=self.method,
                               url=self.url,
                               body_type=self.body_type,
                               body_data=file,
                               headers=headers)
            return res
Exemplo n.º 13
0
    def test_api(self, case_data):
        global GLOBAL_VARS
        case_id = case_data['case_id']
        url = case_data['url']
        method = case_data['method']
        body_type = case_data['body_type']
        self.base_header.update(case_data['headers'])  # 动态更新headers
        body_data = case_data['body_data']
        logger.info("============== 开始执行第%d条接口测试用例,请求数据如下 ===============" %
                    case_id)
        logger.info("请求地址:{}".format(url))
        logger.info("请求类型:{}".format(method))

        expected_res = case_data['expected_res']  # 单个期望结果
        expected_res_list = oe.get_expected_result_list(expected_res)  # 多个期望结果
        compare_exp = case_data['compare_exp']
        is_related = case_data['is_related']
        if GLOBAL_VARS and is_related == 1:  # is_related=1:需要替换依赖字段
            temp_url = []
            temp_body_data = []
            temp_expected_res = []
            temp_compare_exp = []
            for key, value in GLOBAL_VARS.items():
                if key in url:
                    url = re.sub(key, value, url)  # 动态替换url中的依赖数据
                    temp_url.append(1)
                if key in str(body_data):
                    body_data = eval(re.sub(
                        key, value, str(body_data)))  # 动态替换body_data中的依赖数据
                    temp_body_data.append(1)
                if key in str(expected_res):
                    expected_res = re.sub(
                        key, value, expected_res)  # 动态替换expected_res中的依赖数据
                    expected_res_list = oe.get_expected_result_list(
                        expected_res)
                    temp_expected_res.append(1)
                if compare_exp:
                    if key in str(compare_exp):
                        compare_exp = re.sub(key, value, compare_exp)
                        temp_compare_exp.append(1)
            if len(temp_url) > 0:
                logger.info("url动态更新为{}".format(url))
            if len(temp_body_data) > 0:
                logger.info("请求体动态更新为{}".format(body_data))
            if len(temp_expected_res) > 0:
                logger.info("期望结果动态更新为{}".format(expected_res_list))
            if len(temp_compare_exp) > 0:
                logger.info("匹配表达式动态更新为{}".format(
                    [i for i in compare_exp.split('\n')]))
        # 发起请求
        if body_type == 'MULTIPART':
            iu = ImgUpload(method=method,
                           url=url,
                           body_type=body_type,
                           headers=self.base_header,
                           logger=logger)
            res = iu.upload_data
        else:
            logger.info("请求头信息:")
            logger.info("{}".format(self.base_header))
            logger.info("请求体类型:{}".format(body_type))
            if not body_data:
                msg = "空"
            else:
                msg = body_data
            logger.info("请求体内容:{}".format(msg))
            res = base_request(method=method,
                               url=url,
                               body_type=body_type,
                               body_data=body_data,
                               headers=self.base_header)
        res_text = res.text
        if r'\u' in res.text:  # str存在unicode,将unicode转成中文
            try:
                res_text = res.text.encode('utf-8').decode('unicode_escape')
            except UnicodeEncodeError:
                res_text = res.text
        res_text = r'%s' % res_text  # 响应文本
        # 响应结果中有空白的(包括" ",\n,\r,\t)替换为空字符,有null的替换为None
        if res_text:
            if 'null' in res_text:
                res_text = res_text.replace('null', 'None')
            res_r = re.findall(r'\s', res_text)
            if res_r:
                res_text = re.sub(r'\s', '', res_text)

        res_status_code = res.status_code  # 响应状态码
        res_elapsed_time = round(res.elapsed.total_seconds() *
                                 1000)  # 响应时长(毫秒)
        logger.info("本次请求的响应状态码:{}".format(res_status_code))
        logger.info("本次请求的响应时长:{}毫秒".format(res_elapsed_time))
        logger.info("本次请求的响应结果:")
        logger.info(res_text)
        # 先要判断返回数据中是否有关联字段,如果有,则需要按表达式提取出来并赋值给全局变量
        related_exp = case_data['related_exp']
        if 'related_exp' in case_data.keys() and related_exp:
            temp = case_data['related_exp'].split('=')
            r = re.findall(temp[1], res_text)
            if r:
                logger.info("从响应结果中提取依赖数据:{}".format(r[0]))
            else:
                logger.info("请检查表达式格式是否正确")
            GLOBAL_VARS[temp[0]] = r[0]
            logger.info("global_vars动态更新为:{}".format(GLOBAL_VARS))

        # 检查点校验
        compare_type = case_data['compare_type']  # 匹配类型,0,1,2
        logger.info("本次请求的期望结果与实际结果比对方式为:")
        if compare_type == 0:
            logger.info("->全值匹配模式")
            try:
                self.assertEqual(expected_res, res_text)
                oe.write_in_result(case_id + 2, 'PASS')
                logger.info(Msg.PASS)
            except AssertionError as e:
                error_msg = Msg.DEFAULT(case_id, case_data['html_case_name'],
                                        e)
                error_list.append(error_msg)
                oe.write_in_result(case_id + 2, 'FAIL')
                logger.exception(Msg.FAIL)
                raise AssertionError
        elif compare_type == 1:
            logger.info("->正则匹配模式")
            logger.info("本次请求的期望结果:{}".format(expected_res_list))
            ce = CompExpUtil(compare_exp, res, res_text, logger)
            ce_dict = ce.data_dict
            logger.info("本次请求的实际结果:")
            logger.info("{}".format(ce_dict))
            m = 1
            msg = ''
            try:
                for exp_res, key_val in zip(expected_res_list,
                                            ce_dict.items()):
                    logger.info("----开始比对第%d个检查点%s和%s----" %
                                (m, exp_res, str(key_val[1])))
                    if key_val[0] == 'status_code':
                        msg = Msg.STATUS_CODE(exp_res, key_val[1])
                    elif 'isNone->' in key_val[0]:
                        msg = Msg.IS_NONE(exp_res, key_val[1])
                    elif 'greater->' in key_val[0]:
                        msg = Msg.GREATER(key_val[1], exp_res)
                        self.assertGreater(int(key_val[1]),
                                           int(exp_res),
                                           msg=msg)
                        m += 1
                        continue
                    elif 'less->' in key_val[0]:
                        msg = Msg.LESS(key_val[1], exp_res)
                        self.assertLess(int(key_val[1]), int(exp_res), msg=msg)
                        m += 1
                        continue
                    elif 'len->' in key_val[0]:
                        msg = Msg.LEN(exp_res, key_val[1])
                    else:
                        msg = Msg.EXP_COMPARE(exp_res, key_val[1])
                    self.assertEqual(exp_res, str(key_val[1]), msg=msg)
                    m += 1
                oe.write_in_result(case_id + 2, 'PASS')
                logger.info(Msg.PASS)
            except AssertionError:
                error_msg = Msg.ASSERT_ERROR(case_id,
                                             case_data['html_case_name'], m,
                                             msg)
                error_list.append(error_msg)
                oe.write_in_result(case_id + 2, 'FAIL')
                logger.exception(Msg.FAIL)
                raise AssertionError
        elif compare_type == 2:
            logger.info("->响应结果为列表串进行长度校验")
            logger.info("接口请求的期望结果是:{}".format(expected_res))
            try:
                list_len = len(eval(res_text))
                logger.info("响应结果实际长度为%d" % list_len)
                self.assertEqual(expected_res, list_len)

                oe.write_in_result(case_id + 2, 'PASS')
                logger.info(Msg.PASS)
            except AssertionError as e:
                error_msg = Msg.DEFAULT(case_id, case_data['html_case_name'],
                                        e)
                error_list.append(error_msg)
                oe.write_in_result(case_id + 2, 'FAIL')
                logger.exception(Msg.FAIL)
                raise AssertionError
        else:
            pass
        logger.info(
            "====================== 结束第%d条接口测试用例 =======================" %
            case_id)
Exemplo n.º 14
0
"""
from common.baseRequest import base_request
import time

tokens = {
    'SCU58060Tcc362d832dee07b390f149a76147a9cb5d5eb24d11c13': 'SONGXIAO',
    'SCU58069Tf503b96e8a1f5f3792c24a5407ba73ae5d5f3ede21abc': 'XIAOLI',
    'SCU58073T976ac35308b187aacb419f7ef78197985d5f4cd940e4d': 'YUXIN'
}


def cur_time():
    return time.strftime('%Y%m%d_%H点%M分%S秒')


def get_name_by_token(token):
    return tokens[token]


data = {
    'text': 'Python代码已更新_%s' % cur_time(),
    'desp': '脚本已更新,请拉取最新代码进行测试!%s' % cur_time()
}

r = tuple(map(lambda x: (base_request('get', 'https://sc.ftqq.com/%s.send' % x, data=data).text, x), tokens))
for i in r:
    if 'success' in i[0]:
        print('Send To %s Success' % get_name_by_token(i[1]))
    else:
        print('Send To %s Fail' % get_name_by_token(i[1]))
Exemplo n.º 15
0
 def json_res(self):
     url = self.url + str(self.city_code)
     res = base_request(method='get', url=url)
     res = res.json()
     return res