예제 #1
0
파일: handler.py 프로젝트: isAqi/auto_work
    def add_loan(self):
        data = {
            "member_id": self.member_id,
            "title": "一个测试项目",
            "amount": 3000,
            "loan_rate": 20.0,
            "loan_term": 6,
            "loan_date_type": 1,
            "bidding_days": 5
        }

        res = requests_handler.visit(
            Handler.yaml['url']['domain'] + "/loan/add",
            method='post',
            headers={
                "X-Lemonban-Media-Type": "lemonban.v2",
                "Authorization": self.token
            },
            json=data)

        result_data = res.json()

        loan_id = jsonpath.jsonpath(result_data, "$..id")[0]

        return loan_id
예제 #2
0
    def test_login(self, case):
        # 第一步:准备用例数据
        # 请求方法
        method = case["method"]
        # 请求地址
        url = case["url"]
        # 请求参数
        data = json.loads(case["data"])
        # 请求头
        headers = json.loads(case["headers"])
        # 预期结果
        expected = json.loads(case["expected"])

        # 第二步:发送请求获取实际结果
        res = requests_handler.visit(method=method,
                                     url=url,
                                     json=data,
                                     headers=headers)
        # 获取实际结果

        print("预期结果:", expected)
        print("实际结果:", res)
        # 第三步:断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
        except AssertionError as e:
            # 结果回写excel中
            pass
예제 #3
0
    def test_register(self, test_info):

        # 判断测试用例数据有没有 #phone#, 如果有,就要替换成动态生成的手机号码。
        if "#phone#" in test_info["data"]:
            phone = self.random_phone()
            test_info["data"] = test_info["data"].replace("#phone#", phone)

        # 访问接口
        data = json.loads(test_info["data"])
        resp = requests_handler.visit(url=test_info["url"],
                                      method=test_info["method"],
                                      json=data,
                                      headers=json.loads(test_info["headers"]))
        expected_dict = json.loads(test_info["expected"])

        try:
            for key, value in expected_dict.items():
                self.assertEqual(value, resp[key])

            if resp["code"] == 0:
                # 查询数据当中有没有插入手机号码注册成功的记录
                # db = Handler.db_mysql_class()
                sql_code = "SELECT * from futureloan.member WHERE mobile_phone={};".format(
                    data["mobile_phone"])
                user = self.db.query(sql_code)
                self.assertTrue(user)

            logger.info("测试用例通过")
        except AssertionError as e:
            logger.error("测试用例无法通过:{}".format(e))
            raise e
예제 #4
0
    def test_login(self, test_info):

        # 访问接口
        logger.info(
            "==================================开始执行第{}条测试用例=================================="
            .format(test_info['case_id']))

        res = visit(url=hd.yaml['http']['base_url1'] + test_info['url'],
                    method=test_info['method'],
                    headers=json.loads(test_info['headers']),
                    data=json.loads(test_info['data']))

        expected = json.loads(test_info['expected'])
        logger.info('预期结果是:{}'.format(expected))
        logger.info('实际结果是:{}'.format(res))

        try:
            for k, v in expected.items():
                self.assertEqual(res[k], v)

            logger.info('用例执行通过')
            self.result = 'PASS'
        except AssertionError as e:
            logger.error('用例执行失败')
            self.result = 'FAIL'
            raise e
        finally:
            hd.excel.write('Login', test_info['case_id'] + 1, 9, self.result)
예제 #5
0
    def test_recharge(self, case_info):

        data = case_info["data"]
        if "#member_id#" in data:
            data = data.replace("#member_id#", str(self.member_id))

        headers = case_info["headers"]
        if "#token#" in headers:
            headers = headers.replace("#token#", self.token)

        # 查询之前查余额
        user_money = self.db.query(
            "SELECT leave_amount FROM member WHERE id ={}".format(
                self.member_id))
        before_money = user_money["leave_amount"]
        resp = requests_handler.visit(url=env_data.yaml_data["host"] +
                                      case_info["url"],
                                      method=case_info["method"],
                                      headers=json.loads(headers),
                                      json=json.loads(data))
        expected = json.loads(case_info["expected"])
        self.assertTrue(expected["code"], resp["code"])
        self.assertTrue(expected["msg"], resp["msg"])

        if resp["code"] == 0:
            user_money = self.db.query(
                "SELECT leave_amount FROM member WHERE id ={}".format(
                    self.member_id))
            after_money = user_money["leave_amount"]
            self.assertTrue(before_money + data["amount"] == after_money)

        pass
예제 #6
0
    def test_message_send(self, test_info):
        # token
        if '恭喜升级为英粉卡会员' in test_info['context']:
            test_info['context'] = eval(test_info['context'])
            user_id = test_info['context']['userId']
            headers = {'userToken': 'b5d13ed74062a0dbd5fb6d4b4d785d40'}
            data = {
                "mobile": "",
                "messageType": 2,
                "templateCode": "692346695",
                "data": {
                    "userId": user_id,
                    "title": "恭喜升级为英粉卡会员",
                    "content": "",
                    "imageUrl": "",
                    "popupImageUrl":
                    "https://life-dt.oss-cn-hangzhou.aliyuncs.com/advert/dfb3060da11e4f4c898c08dba6051d7f.png?x-oss-process=style/q60",
                    "jumpFlag": 0,
                    "appLink": "",
                    "h5Link": "",
                    "displayPosition": "1",
                    "isSendStationMsg": 1
                }
            }

            res = visit(
                url='https://s.inglemirepharmmall.com/message/send',
                method='post',
                headers=headers,
                json=data,
            )
            logger.info(res)
예제 #7
0
파일: test_add.py 프로젝트: isAqi/auto_work
    def test_recharge(self, caseData):
        method = caseData['method']
        url = handlerMid.yaml['url']['domain'] + caseData['case_url']
        data = caseData['case_data']
        headers = json.loads(caseData['headers'])
        expected_results = eval(caseData['case_expected'])

        # 使用已经登录的memberId 更换用例数据中member_id的值
        # if '#memberId' in data:
        #     data = data.replace("#memberId", str(self.member_id))
        #     # data["member_id"] = self.member_id

        # data = json.loads(data)

        # 使用已经登录的token 更换用例数据中token的值
        # if '#Token' in headers["Authorization"]:
        #     headers["Authorization"] = self.token

        data = handlerMid.replace_data(caseData['case_data'])
        headers = handlerMid.replace_data(caseData['headers'])
        headers = json.loads(headers)
        data = json.loads(data)

        # 查询新增项目前数据库中 该用户的项目数
        if caseData['check_sql'] is not None:
            before_sql = "SELECT COUNT(1) before_count FROM loan WHERE member_id={}".format(
                self.member_id)
            before_count = self.db.query(before_sql,
                                         one=False)[0]['before_count']

        # 访问接口
        res = requests_handler.visit(url,
                                     method=method,
                                     json=data,
                                     headers=headers)

        try:
            for key, value in expected_results.items():
                self.assertEqual(value, res.json()[key])

            # 查询新增项目后数据库中 该用户的
            # 项目数
            if res.json()["code"] == 0:
                after_sql = "SELECT COUNT(1) after_count FROM loan WHERE member_id={}".format(
                    self.member_id)
                after_count = self.db.query(after_sql,
                                            one=False)[0]['after_count']
                # 新增前后项目数
                self.assertEqual(before_count + 1, after_count)
            handlerMid.excel.update_excel('addProject',
                                          caseData["case_id"] + 1, 10, 'pass')
            logger.info("第 {} 条测试用例通过".format(caseData["case_id"]))
        except Exception as e:
            handlerMid.excel.update_excel('addProject',
                                          caseData["case_id"] + 1, 10, 'fail')
            logger.error("测试用例无法通过,预期结果:{}!=实际结果:{}".format(
                expected_results, res.json()))
            logger.error(traceback.format_exc())
            raise e
예제 #8
0
    def test_recharge(self, case_info):
        """测试充值接口"""

        # data = case_info["data"]
        # if "#member_id#" in data:
        #     data = data.replace("#member_id#", str(self.member_id))
        # data = eval(data)
        #
        # headers = case_info["headers"]
        # if "#token#" in headers:
        #     headers = headers.replace("#token#", self.token)

        data = env_data.replace_data(case_info["data"])
        print(data)
        headers = env_data.replace_data(case_info["headers"])
        print(headers)

        # 充值之前查余额
        user_money = self.db.query(
            "SELECT leave_amount FROM member WHERE id ={}".format(
                self.member_id))
        before_amount = user_money["leave_amount"]
        # 金额大于500000调用提现接口
        if before_amount >= 500000:
            env_data.withdraw()
        logger.info("正在执行第{}条用例:{}".format(case_info["case_id"],
                                           case_info["title"]))
        data = json.loads(data)
        resp = requests_handler.visit(url=env_data.yaml_data["host"] +
                                      case_info["url"],
                                      method=case_info["method"],
                                      headers=json.loads(headers),
                                      json=data)
        print(resp)
        data_path = os.path.join(env_data.config.DATA_PATH, "testcases.xlsx")
        try:
            expected = eval(case_info["expected"])
            self.assertTrue(expected["code"] == resp["code"])
            self.assertTrue(expected["msg"] == resp["msg"])

            if resp["code"] == 0:
                user_money = self.db.query(
                    "SELECT leave_amount FROM member WHERE id ={}".format(
                        self.member_id))
                after_amount = user_money["leave_amount"]
                self.assertTrue(
                    Decimal(str(before_amount)) +
                    Decimal(str(data["amount"])) == Decimal(str(after_amount)))
            self.result = "PASS"
            logger.info("第{}条测试用例通过".format(case_info["case_id"]))
        except AssertionError as e:
            self.result = "FAIL"
            logger.error("第{}条测试用例无法通过:{}".format(case_info["case_id"], e))
            raise e
        finally:
            ExcelHandler(data_path).write(sheet_name="recharge",
                                          row=case_info["case_id"] + 1,
                                          column=9,
                                          data=self.result)
예제 #9
0
 def withdraw(self):
     data = {"member_id": self.member_id, "amount": 500000}
     resp = requests_handler.visit(
         url=MiddleHandler.yaml_data["host"] + "/member/withdraw",
         method="post",
         headers={"X-Lemonban-Media-Type": "lemonban.v2", "Authorization": self.token},
         json=data
     )
예제 #10
0
 def sys_login(self):
     '''后台登陆'''
     data = {"username": "******", "password": "******"}
     res = visit(url=self.yaml['http']['base_url3'] + '/admin/sys/login',
                 method='post',
                 json=data)
     sys_token = jsonpath(res, '$..token')[0]
     return sys_token
예제 #11
0
 def audit(self):
     data = {"loan_id":self.loan_id,"approved_or_not":True}
     resp = requests_handler.visit(
         url=MiddleHandler.yaml_data["host"] + "/loan/audit",
         method="patch",
         headers={"X-Lemonban-Media-Type":"lemonban.v2", "Authorization": self.admin_token},
         json=data
     )
     return data["loan_id"]
예제 #12
0
파일: handler.py 프로젝트: isAqi/auto_work
    def recharge(self):
        data = {"member_id": self.investors_member_id, "amount": "3000"}

        res = requests_handler.visit(
            Handler.yaml['url']['domain'] + "/member/recharge",
            method='post',
            headers={
                "X-Lemonban-Media-Type": "lemonban.v2",
                "Authorization": self.investors_token
            },
            json=data)
예제 #13
0
파일: handler.py 프로젝트: isAqi/auto_work
    def audit_loan(self):
        data = {"loan_id": self.loan_id, "approved_or_not": True}

        res = requests_handler.visit(
            Handler.yaml['url']['domain'] + "/loan/audit",
            method='patch',
            headers={
                "X-Lemonban-Media-Type": "lemonban.v2",
                "Authorization": self.admin_token
            },
            json=data)
예제 #14
0
    def test_audit(self, case_info):
        """测试提现接口"""
        logger.info("正在执行第{}条用例:{}".format(case_info["case_id"],
                                           case_info["title"]))
        data = case_info["data"]
        if "#loan_id#" in data:
            data = data.replace("#loan_id#", str(self.loan_id))
        data = eval(data)
        print(data)

        headers = case_info["headers"]
        if "#token#" in headers:
            headers = headers.replace("#token#", self.token)
        headers = eval(headers)

        if "#admin_token#" in headers:
            headers = headers.replace("#token#", self.admin_token)
        headers = eval(headers)
        # 动态生成一个已经不是审核状态的标
        # 直接在数据库中查找status != 1,
        data = case_info["data"]
        if "#pass_loan_id#" in data:
            data = self.db.query("SELECT * FROM loan WHERE status != 1")

        data = eval(data)

        data = case_info["data"]
        if "#pass_loan_id#" in data:
            data = data.replace("#loan_id#", str(env_data.pass_loan_id))
        data = eval(data)

        resp = requests_handler.visit(url=env_data.yaml_data["host"] +
                                      case_info["url"],
                                      method=case_info["method"],
                                      json=data,
                                      headers=headers)
        # x = json.loads(data["amount"])
        # print(x)
        try:
            expected = json.loads(case_info["expected"])
            for k, v in expected.items():
                print(resp[k])
                self.assertTrue(v == resp[k])

            if resp["code"] == 0:
                # 验证数据库状态
                loan = self.db.query("SELECT * FROM loan WHERE id={}".format(
                    self.loan_id))
                self.assertTrue(loan["status"] == expected["status"])
                env_data.pass_loan_id = loan["id"]
            logger.info("第{}条测试用例通过".format(case_info["case_id"]))
        except AssertionError as e:
            logger.error("第{}条测试用例无法通过:{}".format(case_info["case_id"], e))
            raise e
예제 #15
0
    def test_recharge(self, caseData):
        method = caseData['method']
        url = handlerMid.yaml['url']['domain'] + caseData['case_url']

        expected_results = eval(caseData['case_expected'])

        # 使用已经登录的memberId 更换用例数据中member_id的值
        # if data['member_id'] == '#memberId':
        #     # data = data.replace("#menberId", self.member_id)
        #     data["member_id"] = self.member_id
        # 使用已经登录的token 更换用例数据中token的值
        # if headers["Authorization"] == '#Token':
        #     headers["Authorization"] = self.token
        # 替换数据
        data = handlerMid.replace_data(caseData['case_data'])
        headers = handlerMid.replace_data(caseData['headers'])
        headers = json.loads(headers)
        data = json.loads(data)

        # 查询充值之前的余额
        if caseData['check_sql'] is not None:
            # "SELECT leave_amount from member where id={}".format(self.member_id)
            before_sql = eval(caseData['check_sql'])
            before_amount = self.db.query(before_sql)['leave_amount']

        # 访问接口
        res = requests_handler.visit(url,
                                     method=method,
                                     json=data,
                                     headers=headers)

        try:
            for key, value in expected_results.items():
                self.assertEqual(value, res.json()[key])

            # 充值成功后需要判断数据库中的金额是否正确
            if res.json()["code"] == 0:
                after_sql = "SELECT leave_amount from member where id={}".format(
                    self.member_id)
                after_amount = self.db.query(after_sql)['leave_amount']
                # 断言充值金额加上充值前的金额 要等于 充值成功后的金额
                self.assertEqual(
                    Decimal(str(data['amount'])) + before_amount, after_amount)
            handlerMid.excel.update_excel('recharge', caseData["case_id"] + 1,
                                          10, 'pass')
            logger.info("第 {} 条测试用例通过".format(caseData["case_id"]))
        except Exception as e:
            handlerMid.excel.update_excel('recharge', caseData["case_id"] + 1,
                                          10, 'fail')
            logger.error("测试用例无法通过,预期结果:{}!=实际结果:{}".format(
                expected_results, res.json()))
            logger.error(traceback.format_exc())
            raise e
예제 #16
0
파일: handler.py 프로젝트: isAqi/auto_work
    def login(self, user):
        res = requests_handler.visit(
            Handler.yaml['url']['domain'] + "/member/login",
            method='post',
            headers={"X-Lemonban-Media-Type": "lemonban.v2"},
            json=Handler.yaml[user])
        data = res.json()

        token_str = jsonpath.jsonpath(data, "$..token")[0]
        token_type = jsonpath.jsonpath(data, "$..token_type")[0]
        token = " ".join([token_type, token_str])
        member_id = jsonpath.jsonpath(data, "$..id")[0]
        return {"token": token, "member_id": member_id}
예제 #17
0
 def add_coupon(self, phone, coupon_id):
     '''发送优惠券'''
     data = {
         "userMobile": phone,
         "couponId": coupon_id,
         "couponCnt": 1,
         "memo": ""
     }
     res = visit(url=self.yaml['http']['base_url3'] +
                 '/admin/userCoupon/addCouponMember',
                 method='post',
                 headers={'token': self.sys_token},
                 json=data)
예제 #18
0
    def test_audit(self, case_info):
        """测试提现接口"""
        logger.info("正在执行第{}条用例:{}".format(case_info["case_id"],
                                           case_info["title"]))
        data = case_info["data"]
        if "#loan_id#" in data:
            data = data.replace("#loan_id#", str(self.loan_id))

        if "#pass_loan_id#" in data:
            loan_info = self.db.query("SELECT * FROM loan WHERE status != 1")
            data = data.replace("#pass_loan_id#", str(loan_info["id"]))

        headers = case_info["headers"]
        if "#admin_token#" in headers:
            headers = headers.replace("#admin_token#", self.admin_token)

        if "#token#" in headers:
            headers = headers.replace("#token#", self.token)

        resp = visit(url=env_data.yaml_data["host"] + case_info["url"],
                     method=case_info["method"],
                     headers=eval(headers),
                     json=eval(data))
        print(resp)
        data_path = os.path.join(env_data.config.DATA_PATH, "testcases.xlsx")
        try:
            expected = json.loads(case_info["expected"])
            self.assertTrue(expected["code"] == resp["code"])
            self.assertTrue(expected["msg"] == resp["msg"])

            if resp["code"] == 0:
                # 验证数据库状态
                loan_info_after = self.db.query(
                    "SELECT * FROM loan WHERE id={}".format(self.loan_id))
                # a = loan_info_after["status"]
                # b = eval(case_info["expected"])["status"]
                # print(a)
                # print(b)
                self.assertTrue(
                    loan_info_after["status"] == expected["status"])
            self.result = "PASS"
            logger.info("第{}条测试用例通过".format(case_info["case_id"]))
        except AssertionError as e:
            self.result = "FAIL"
            logger.error("第{}条测试用例无法通过:{}".format(case_info["case_id"], e))
            raise e
        finally:
            ExcelHandler(data_path).write(sheet_name="audit",
                                          row=case_info["case_id"] + 1,
                                          column=9,
                                          data=self.result)
예제 #19
0
 def add_project(self):
     data = {"member_id":self.member_id,
             "title":"借钱去月球看星星",
             "amount":100000,
             "loan_rate":12.0,
             "loan_term":3,
             "loan_date_type":1,
             "bidding_days":5}
     resp = requests_handler.visit(
         url=MiddleHandler.yaml_data["host"] + "/loan/add",
         method="post",
         headers={"X-Lemonban-Media-Type":"lemonban.v2", "Authorization": self.token},
         json=data
     )
     return jsonpath(resp,"$..id")[0]
예제 #20
0
    def test_dispose_ht_order(self, test_info):
        '''处理海淘订单'''
        logger.debug('用户参数:{}'.format(test_info))
        headers = {'usertoken': 'e310b8e28f7cad52803cd836211cae65'}
        data = {
            'orderSn': test_info['orderSn'],
            'realName': test_info['realName'],
            'idNumber': test_info['idNumber']
        }
        # 访问接口
        res = visit(url='http://test.inglemirepharmmall.com/order/',
                    method='post',
                    headers=headers,
                    data=data)

        logger.info('第{}条的响应是:{}'.format(test_info['case_id'], res['msg']))
예제 #21
0
    def login(self, user):
        """登录测试账号"""
        res = requests_handler.visit(
            url=MiddleHandler.yaml_data["host"] + "/member/login",
            method="post",
            headers={"X-Lemonban-Media-Type": "lemonban.v2"},
            json=user
        )

        # 提取token
        # jsonpath
        token_type = jsonpath(res, "$..token_type")[0]
        token_str = jsonpath(res, "$..token")[0]
        token = " ".join([token_type, token_str])
        member_id = jsonpath(res, "$..id")[0]
        return {"token": token, "member_id": member_id}
예제 #22
0
    def test_invest(self, case_info):
        """测试投资接口"""
        # before_data = self.db.query(
        #     "SELECT COUNT(*) as berfore_num FROM loan WHERE member_id={};".format(self.member_id))
        # before_num = before_data["berfore_num"]
        logger.info("正在执行第{}条用例:{}".format(case_info["case_id"],
                                           case_info["title"]))
        data = case_info["data"]
        if "#member_id#" in data:
            data = data.replace("#member_id#", str(self.member_id))

        headers = case_info["headers"]
        if "#token#" in headers:
            headers = headers.replace("#token#", self.token)

        if "#loan_id#" in data:
            data = data.replace("#loan_id#", str(self.pass_loan_id))

        # 访问接口
        data_1 = self.db.query("SELECT * FROM loan WHERE id = {}".format(
            self.pass_loan_id))
        resp = visit(url=env_data.yaml_data["host"] + case_info["url"],
                     method=case_info["method"],
                     json=eval(data),
                     headers=eval(headers))
        print(resp)
        data_path = os.path.join(env_data.config.DATA_PATH, "testcases.xlsx")
        try:
            for k, v in json.loads(case_info["expected"]).items():
                self.assertTrue(v == resp[k])
            # if resp["code"] == 0:
            #     after_data = self.db.query(
            #         "SELECT COUNT(*) as after_num FROM loan WHERE member_id={};".format(self.member_id))
            #     after_num = after_data["after_num"]
            #     self.assertTrue(before_num + 1 == after_num)
            self.result = "PASS"
            logger.info("第{}条测试用例通过".format(case_info["case_id"]))

        except AssertionError as e:
            self.result = "FAIL"
            logger.error("第{}条测试用例无法通过:{}".format(case_info["case_id"], e))
            raise e
        finally:
            ExcelHandler(data_path).write(sheet_name="add",
                                          row=case_info["case_id"] + 1,
                                          column=9,
                                          data=self.result)
예제 #23
0
    def test_getMyStoreList(self, test_info):
        '''
        获取门店列表
        :param test_info:用例数据
        '''

        # 替换参数化数据
        logger.debug('L3_token:{}'.format(self.L3_token))
        if '#token#' in test_info['headers']:
            test_info['headers'] = test_info['headers'].replace(
                '#token#', self.L3_token)

        headers = json.loads(test_info['headers'])

        logger.info(
            "==================================开始执行第{}条测试用例=================================="
            .format(test_info['case_id']))

        # 访问接口
        res = visit(url=hd.yaml['http']['base_url1'] + test_info['url'],
                    method=test_info['method'],
                    headers=headers)
        expected = json.loads(test_info['expected'])

        logger.info('预期结果是:{}'.format(expected))
        logger.info('实际结果是:{}'.format(res))

        store_id_list = jsonpath(res, '$..storeId')
        store_id_str = ''
        for i in store_id_list:
            store_id_str += str(i) + ','
        store_id_str = store_id_str.strip(',')

        if res['code'] == 0:
            sql = 'SELECT count(*) from db_yshu_life.ys_local_warehouse where store_id in {}'.format(
                eval(store_id_str))
            store_count = self.db.query_db(sql)['count(*)']

            try:
                self.assertEqual(store_count, len(store_id_list))
                logger.info('用例执行通过')
                self.result = 'Pass'
            except AssertionError as e:
                logger.error('用例执行失败:{}'.format(e))
                self.result = 'Fail'
                raise e
예제 #24
0
    def test_invest(self, test_info):
        # 用handler()中同名属性的值替换用例data中被标记的数据
        data = test_info["data"]
        data = env_data.replace_data(data)
        data = eval(data)

        # 替换 token ,存在 headers 当中
        headers = test_info["headers"]
        headers = env_data.replace_data(headers)
        headers = json.loads(headers)

        # 查询之前的余额
        if test_info["check_sql"]:
            member = self.db.query("SELECT * FROM futureloan.member WHERE id={}".format(self.member_id))
            money_before = member['leave_amount']

            before_loan = self.db.query(
                "SELECT * FROM futureloan.invest WHERE member_id={}".format(self.member_id),
                one=False
            )

        # 访问接口
        resp = requests_handler.visit(
            url=env_data.yaml["host"] + test_info["url"],
            method=test_info["method"],
            headers=headers,
            json=data
        )
        print(data)
        print(resp)
        expected = json.loads(test_info["expected"])
        self.assertEqual(expected["code"], resp["code"])
        self.assertEqual(expected["msg"], resp["msg"])

        if resp["code"] == 0:
            after_loan = self.db.query(
                "SELECT * FROM futureloan.invest WHERE member_id={}".format(self.member_id),
                one=False
            )
            # 断言投资记录是否增加一条 invest
            self.assertEqual(len(before_loan) + 1, len(after_loan))

            # 断言用户余额是否减少
            member_after = self.db.query("SELECT * FROM futureloan.member WHERE id={}".format(self.member_id))
            money_after = member_after['leave_amount']
            self.assertEqual(money_before - data["amount"], money_after)
예제 #25
0
 def login(self, user_info):
     '''
     账号登录,提取用户的token
     :return:
     '''
     res = visit(url=self.yaml['http']['base_url1'] +
                 '/member/passwordLogin',
                 method='post',
                 headers={
                     "appDevice": "1",
                     "deviceNumber": "52836374-4aa3-45fd-9291-45386072224e"
                 },
                 data=user_info)
     token = jsonpath(res, '$..userToken')[0]
     user_id = jsonpath(res, '$..userId')[0]
     mobile = jsonpath(res, '$..mobile')
     member_info = {'token': token, 'user_id': user_id, 'mobile': mobile}
     return member_info
예제 #26
0
 def test_login(self, test_info):
     """测试登录接口"""
     logger.info("正在执行第{}条用例:{}".format(test_info["case_id"],
                                        test_info["title"]))
     logger.info("第{}条测试用例的数据是{}".format(test_info["case_id"], test_info))
     # 访问接口
     logger.info("第{}次访问登录接口".format(test_info["case_id"]))
     resp = requests_handler.visit(test_info["url"],
                                   method=test_info["method"],
                                   json=json.loads(test_info["data"]),
                                   headers=json.loads(test_info["headers"]))
     # 断言
     try:
         for k, v in json.loads(test_info["expected"]).items():
             self.assertTrue(v == resp[k])
         logger.info("第{}条测试用例通过".format(test_info["case_id"]))
     # 登录失败记录日志并抛出异常
     except AssertionError as e:
         logger.error("第{}条测试用例无法通过:{}".format(test_info["case_id"], e))
         raise e
예제 #27
0
    def test_getGoodsListByCouponId(self, test_info):
        '''根据优惠券id获取商品'''

        # 替换参数化数据
        if "#invalidCouponId#" in test_info['data']:
            # 查询状态为失效的couponID
            sql = 'select * from db_yshu_lb.ys_coupon where coupon_status = 0'
            coupon_id = self.db.query_db(sql)['coupon_id']
            test_info['data'] = test_info['data'].replace(
                "#invalidCouponId#", str(coupon_id))

        headers = hd.replace_data(test_info['headers'])
        headers = json.loads(headers)

        data = json.loads(test_info['data'])

        logger.info(
            "==================================开始执行第{}条测试用例=================================="
            .format(test_info['case_id']))

        res = visit(url=hd.yaml['http']['base_url1'] + test_info['url'],
                    method=test_info['method'],
                    headers=headers,
                    params=data)
        expected = json.loads(test_info['expected'])

        logger.info('预期结果是:{}'.format(expected))
        logger.info('实际结果是:{}'.format(res))

        try:
            for k, v in expected.items():
                self.assertEqual(res[k], v)
            logger.info('用例执行通过')
            self.result = 'PASS'
        except AssertionError as e:
            logger.error('用例执行失败')
            self.result = 'Fail'
            raise e
        finally:
            hd.excel.write('getGoodsListByCouponId', test_info['case_id'] + 1,
                           9, self.result)
예제 #28
0
    def test_login(self, caseInfo):
        method = caseInfo['method']
        url = handlerMid.yaml['url']['domain'] + caseInfo['case_url']
        data = json.loads(caseInfo['case_data'])
        headers = json.loads(caseInfo['headers'])
        expected_results = eval(caseInfo['case_expected'])

        # 设置登录成功用例的账号和密码
        if data['mobile_phone'] == "#login_phone#" and data['pwd'] == "#pwd#":
            data["mobile_phone"] = handlerMid.yaml["login_success"][
                "mobile_phone"]
            data["pwd"] = handlerMid.yaml["login_success"]["pwd"]

        # 登录失败手机号未注册(random_new_phoneno()随机数获取电话号码)
        if data['mobile_phone'] == "#newPhone#":
            data["mobile_phone"] = data["mobile_phone"].replace(
                "#newPhone", get_phone.random_new_phoneno())
        # 登录失败密码为空或错误 (old_phoneno()从数据库中查找一个存在的电话号码)
        if data['mobile_phone'] == "#oldPhone#":
            data["mobile_phone"] = data["mobile_phone"].replace(
                "#oldPhone", get_phone.old_phoneno())

        # 访问接口
        res = requests_handler.visit(url,
                                     method=method,
                                     json=data,
                                     headers=headers)

        try:
            for key, value in expected_results.items():
                self.assertEqual(value, res.json()[key])
            logger.info("第 {} 条测试用例通过".format(caseInfo["case_id"]))
            handlerMid.excel.update_excel('login', caseInfo["case_id"] + 1, 9,
                                          'pass')
        except AssertionError as e:
            handlerMid.excel.update_excel('login', caseInfo["case_id"] + 1, 9,
                                          'fail')
            logger.error("测试用例无法通过,预期结果:{}!=实际结果:{}".format(
                expected_results, res.json()))
            logger.error(traceback.format_exc())
            raise e
예제 #29
0
    def test_recharge(self, test_info):
        # 充值接口的访问
        data = test_info["data"]
        if "#member_id#" in data:
            data = data.replace("#member_id#", str(self.member_id))

        headers = test_info["headers"]

        if "#token#" in headers:
            headers = headers.replace("#token#", self.token)

        data = json.loads(data)
        headers = json.loads(headers)

        # 查询之前的余额 Decimal 类型
        user_info = self.db.query(
            "SELECT leave_amount FROM futureloan.member WHERE id={}".format(
                self.member_id))
        before_money = user_info["leave_amount"]

        resp = requests_handler.visit(url=env_data.yaml["host"] +
                                      test_info["url"],
                                      method=test_info["method"],
                                      headers=headers,
                                      json=data)

        expected = json.loads(test_info["expected"])
        self.assertEqual(expected["code"], resp["code"])
        self.assertEqual(expected["msg"], resp["msg"])

        # 充值成功需要校验数据库
        # 充值之前的金额 +  充值金额 == 充值之后的余额
        if resp["code"] == 0:
            user_info = self.db.query(
                "SELECT leave_amount FROM futureloan.member WHERE id={}".
                format(self.member_id))
            after_money = user_info["leave_amount"]
            # a = before_money + data["amount"] == after_money
            self.assertTrue(before_money +
                            Decimal(str(data["amount"])) == after_money)
예제 #30
0
    def test_audit(self, test_info):

        # 数据替换
        data = test_info["data"]
        if "#loan_id#" in data:
            data = data.replace("#loan_id#", str(self.loan_id))

        if "#pass_loan_id#" in data:
            pass_loan = self.db.query(
                "SELECT * FROM futureloan.loan WHERE status !=1;")
            data = data.replace("#pass_loan_id#", str(pass_loan["id"]))

        data = eval(data)

        # 替换 headers
        headers = test_info["headers"]
        if "#admin_token#" in headers:
            headers = headers.replace("#admin_token#", self.admin_token)

        if "#token#" in headers:
            headers = headers.replace("#token#", self.token)

        headers = eval(headers)

        resp = requests_handler.visit(url=env_data.yaml["host"] +
                                      test_info["url"],
                                      method=test_info["method"],
                                      headers=headers,
                                      json=data)

        expected = json.loads(test_info["expected"])
        self.assertEqual(expected["code"], resp["code"])
        self.assertEqual(expected["msg"], resp["msg"])

        if resp["code"] == 0:
            # 验证数据库状态
            loan = self.db.query(
                "SELECT * FROM futureloan.loan WHERE id={}".format(
                    self.loan_id))
            self.assertEqual(expected["status"], loan["status"])