def test_cases(self, case):
        # 准备测试数据
        url = conf.get('env', 'url') + case['url']
        method = case['method']
        headers = {'Authorization': CaseData.token}
        CaseData.case_name = random_data()
        case['data'] = replace_data(case['data'])
        data = eval(case['data'])
        expected = eval(case['expected'])
        row = case['case_id'] + 1
        # 获取结果
        response = self.request.send(url=url,
                                     method=method,
                                     headers=headers,
                                     json=data)
        res = response.json()
        status = response.status_code

        # 对预期结果和相应结果进行断言
        try:
            self.assertEqual(expected['status'], status)
            if '成功' not in case['title']:
                self.assertIn(expected['msg'], str(res.values()))

        except AssertionError as E:
            print('预期结果:', expected)
            print('实际结果:', status, res)
            self.excel.write_data(row=row, column=8, value='不通过')
            log.error('{}用例不通过'.format(case['title']))
            log.exception(E)
            raise E
        else:
            self.excel.write_data(row=row, column=8, value='通过')
Example #2
0
    def test_register(self, case):
        # 第一步:准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        # 生成一个手机号码
        phone = self.random_phone()
        # 替换用例数据中的手机号码
        case["data"] = case["data"].replace("#phone#", phone)
        data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        # 第二步:发送请求,获取结果
        response = self.request.send(url=url, method=method, json=data, headers=headers)
        res = response.json()

        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if case["check_sql"]:
                sql = "SELECT * FROM futureloan.member WHERE mobile_phone={}".format(data["mobile_phone"])
                count = self.db.find_count(sql)
                self.assertEqual(1, count)
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Example #3
0
 def test_info(self, case):
     # 第一步:准备用例数据
     url = conf.get("env", "url") + replace_data(case["url"])
     method = case["method"]
     # 替换参数中的用户id
     headers = eval(conf.get("env", "headers"))
     headers["Authorization"] = getattr(CaseDate, "token_value")
     # 在请求头中加入setupclass中提取出来的token
     expected = eval(case["expected"])
     row = case["case_id"] + 1
     # 第二步:发送请求,获取结果
     response = self.request.send(url=url,
                                  method=method,
                                  json=data,
                                  headers=headers)
     res = response.json()
     # 第三步:断言(比对预期结果和实际结果)
     try:
         self.assertEqual(expected["code"], res["code"])
         self.assertEqual(expected["msg"], res["msg"])
     except AssertionError as e:
         print("预期结果:", expected)
         print("实际结果:", res)
         self.excel.write_data(row=row, column=8, value="未通过")
         log.error("用例:{},执行未通过".format(case["title"]))
         log.exception(e)
         raise e
     else:
         self.excel.write_data(row=row, column=8, value="通过")
         log.info("用例:{},执行未通过".format(case["title"]))
Example #4
0
    def test_regiter(self, case):
        # 准备测试数据
        CaseData.username = self.random_user()
        CaseData.email = self.random_email()
        url = conf.get('env', 'url') + replace_data(case['url'])
        method = case['method']
        case['data'] = replace_data(case['data'])
        data = eval(case['data'])
        expected = eval(case['expected'])
        row = case['case_id'] + 1
        # 获取结果
        response = self.request.send(url=url, method=method, json=data)
        res = response.json()
        status = response.status_code
        # 对预期结果和相应结果进行断言
        try:
            self.assertEqual(expected['status'], status)
            if case['title'] != '注册成功':
                if case['method'].lower() == 'get':
                    self.assertEqual(expected['count'], res['count'])
                else:
                    self.assertIn(expected['msg'], str(res.values()))

        except AssertionError as E:
            print('预期结果:', expected)
            print('实际结果:', status, res)
            self.excel.write_data(row=row, column=8, value='不通过')
            log.error('{}用例不通过'.format(case['title']))
            log.exception(E)
            raise E
        else:
            self.excel.write_data(row=row, column=8, value='通过')
Example #5
0
 def test_mainflow(self, case):
     # 准备测试数据
     CaseData.username = self.random_user()
     CaseData.email = self.random_email()
     CaseData.project_name = random_data()
     CaseData.interfaces = random_data()
     CaseData.case_name = random_data()
     url = conf.get('env', 'url') + replace_data(case['url'])
     method = case['method']
     case['data'] = replace_data(case['data'])
     data = eval(case['data'])
     expected = eval(case['expected'])
     row = case['case_id'] + 1
     # 获取结果
     if case['interface'] != 'register' or case['interface'] != 'login':
         headers = {'Authorization': CaseData.token}
         response = self.request.send(url=url, method=method, headers=headers, json=data)
     else:
         response = self.request.send(url=url, method=method, json=data)
     res = response.json()
     status = response.status_code
     if case['interface'] == 'login':
         CaseData.token = 'JWT ' + jsonpath.jsonpath(res, '$.token')[0]
     # 对预期结果和相应结果进行断言
     try:
         self.assertEqual(expected['status'], status)
     except AssertionError as E:
         print('预期结果:', expected)
         print('实际结果:', status, res)
         self.excel.write_data(row=row, column=8, value='不通过')
         log.error('{}用例不通过'.format(case['title']))
         log.exception(E)
         raise E
     else:
         self.excel.write_data(row=row, column=8, value='通过')
 def test01_browse_goods(self):
     # try:
     # 定位个人中心,然后点击
     goods = B.find_element(P.goods)
     B.click(goods)
     # 定位个人中心页面中的个人中心字样
     time.sleep(2)
     goodscentre = B.find_element(P.goodscentre)
     B.click(goodscentre)
     time.sleep(2)
     goodsdata = B.find_element(P.goodsdata)
     B.click(goodsdata)
     time.sleep(3)
     offline_text = B.get_text(P.offlinegoods)
     print(offline_text)
     try:
         assert offline_text == "线下平台商品"
     except Exception as e:
         # raise NameError("当前页面不包含%s" % (login_sucees_text))
         log.error('用例%s执行不通过' % (sys._getframe().f_code.co_name))
         # # format格式化,把case中的title写入{}中
         log.exception(e)
         raise e
     else:
         log.info('用例%s执行通过' % (sys._getframe().f_code.co_name))
Example #7
0
    def test_login(self, case):
        # 第一步:准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]

        data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 第二步:发送请求,获取结果
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()
        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Example #8
0
    def test_info(self, case):
        # 第一步,准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(CaseData, "admin_token_value")
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        # 第二步,发送请求,获取结果
        response = self.request.send(url=url, method=method, json=data, headers=headers)
        res = response.json()

        # 第三步,断言比对预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            print("预期结果", expected)
            print("实际结果", res)
            log.error("用例{}执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            print("预期结果", expected)
            print("实际结果", res)
            log.error("用例{}执行通过".format(case["title"]))
Example #9
0
    def test_add(self, case):
        # 第一步:准备数据
        url = conf.get("env", "url") + case["url"]
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(CaseDate, "admin_token_value")
        data = eval(replace_data(case["data"]))
        expected = eval(case["expected"])
        method = case["method"]
        row = case["case_id"] + 1
        # 第二步:发请求获取实际结果
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()

        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 数据库校验

        except AssertionError as e:
            print("预期结果:", expected)
            print("实际结果:", res)
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Example #10
0
    def test_login(self, case):
        # 准备用例数据
        url = conf.get("env", "url") + case["url"]
        data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        method = case["method"]
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        # 发送请求
        reponse = self.send.send_requests(url=url, method=method, headers=headers, json=data)
        res = reponse.json()

        # 断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="不通过")
            log.error("用例:{} ,执行".format(case["title"]) + color.white_red("不通过"))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{} ,执行".format(case["title"]) + color.white_green("通过"))
Example #11
0
    def test_withdraw(self, case):
        # 准备用例数据
        url = conf.get("env", "url") + case["url"]
        case["data"] = case["data"].replace("#member_id#", str(self.member_id))
        data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = self.token_value
        method = case["method"]
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 发送请求前的金额
        sql = "select leave_amount from futureloan.member where mobile_phone = {}".format(
            conf.get("test_case", "mobile_phone"))
        pre_money = self.basedata.find_one(sql=sql)["leave_amount"]
        # 发送请求
        response = self.request.send_requests(method=method, url=url, json=data, headers=headers)
        res = response.json()
        # 断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if expected["code"] == 0:
                end_money = self.basedata.find_one(sql=sql)["leave_amount"]
                self.assertEqual(pre_money-end_money,Decimal(str(data["amount"])))

        except AssertionError as e:
            print("预期结果:",expected)
            print("实际结果:",res)
            self.execl.write_data(row=row, column=8, value="未通过")
            log.error("用例:{} ,执行".format(case["title"]) + color.white_red("未通过"))
            log.exception(e)
            raise e
        else:
            self.execl.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行".format(case["title"]) + color.white_green("通过"))
Example #12
0
 def test01_edit_goods(self):
     # try:
     # 定位个人中心,然后点击
     goods = B.find_element(P.goods)
     B.click(goods)
     # 定位个人中心页面中的个人中心字样
     time.sleep(2)
     goodscentre = B.find_element(P.goodscentre)
     B.click(goodscentre)
     time.sleep(2)
     goodsdata = B.find_element(P.goodsdata)
     B.click(goodsdata)
     time.sleep(3)
     editbtn = B.find_element(P.edit)
     B.click(editbtn)
     time.sleep(1)
     # ran = random.choice('abcdefghiklmnopqrstuvwxyz')
     B.send_keys(B.find_element(P.goodsname), ran)
     B.click(B.find_element(P.gencode))
     B.send_keys(B.find_element(P.priceout), ran)
     B.scroll()
     B.click(B.find_element(P.submit))
     time.sleep(1)
     add_success_text = B.get_text(P.add_success)
     print(add_success_text)
     try:
         assert add_success_text == "修改成功"
     except Exception as e:
         # raise NameError("当前页面不包含%s" % (login_sucees_text))
         log.error('用例%s执行不通过' % (sys._getframe().f_code.co_name))
         # # format格式化,把case中的title写入{}中
         log.exception(e)
         raise e
     else:
         log.info('用例%s执行通过' % (sys._getframe().f_code.co_name))
 def test_projects(self, case):
     # 第一步:准备用例数据
     url = conf.get("env", "url") + case["url"]
     method = case["method"]
     # 准备请求头
     headers = {"Authorization": getattr(CaseDate, "token")}
     # 替换用例数据中的参数化
     data = eval(replace_data(case["data"]))
     # 替换预期结果中的数据
     expected = eval(replace_data(case["expected"]))
     row = case["case_id"] + 1
     # 第二步:发送请求,获取结果
     response = self.request.send(url=url,
                                  method=method,
                                  json=data,
                                  headers=headers)
     res = response.json()
     try:
         self.assert_dict_item(expected, res)
     except AssertionError as e:
         self.excel.write_data(row=row, column=8, value="未通过")
         log.error("用例:{},执行未通过".format(case["title"]))
         log.exception(e)
         raise e
     else:
         self.excel.write_data(row=row, column=8, value="通过")
         log.info("用例:{},执行通过".format(case["title"]))
Example #14
0
 def test_invest(self,case):
     #登录
     title =case['title']
     row=case['case_id']
     method=case['method']
     url=conf.get('env','url')+case['url']
     chk_sql =case['chk_sql']
     data = case['data']
     data=eval(self.replacedata.replacedata(data))
     expected=eval(case['expected'])
     #chk_sql=case['chk_sql']
     if  case['case_id'] ==2 :
         send_audit =SendRequest()
         print('不审批,进行投资')
         print(title,url,data)
         res_info=send_audit.sendrequest(method=method,url=url,headers=self.headers_admin,json=data)
         res_info=res_info.json()
     elif case['case_id'] == 3:
         send_audit =SendRequest()
         print('审批:投资------先审批,再投资')
         audit_data='{"loan_id":#loan_id#,"approved_or_not":"true"}'
         audit_url='http://api.lemonban.com/futureloan//loan/audit'
         audit_data=eval(self.replacedata.replacedata(audit_data))
         res_audit=send_audit.sendrequest(method='PATCH',url=audit_url,headers=self.headers_admin,json=audit_data)
         print('审批数据:',audit_data)
         print('审批结果:',res_audit.json())
         print(title,url,data)
         res_info=send_audit.sendrequest(method=method,url=url,headers=self.headers_admin,json=data)
         res_info=res_info.json()
     else:
         send_audit =SendRequest()
         print('投资或登录------')
         print(title,url,data)
         res_info=send_audit.sendrequest(method=method,url=url,headers=self.headers_admin,json=data)
         res_info=res_info.json()
     if case['interface'] == 'login':
         print('审核账号登录:',res_info)
         ReplaceData.member_id=jsonpath.jsonpath(res_info,'$..id')[0]
         token = jsonpath.jsonpath(res_info,'$..token')[0]
         token_type = jsonpath.jsonpath(res_info,'$..token_type')[0]
         self.headers_admin['Authorization']='{} {}'.format(token_type,token)
     try :
         print('实际结果:{}'.format(res_info))
         print('期望结果:{}'.format(expected))
         if chk_sql :
             sql_data_end=self.connet.select_data(sql=self.sql)
             leave_amount_end=sql_data_end['leave_amount']
             #self.assertEqual(Decimal(str(data['amount'])),(leave_amount_start-leave_amount_end))
         self.assertEqual(expected['code'],res_info['code'])
         self.assertEqual(expected['msg'],res_info['msg'])
         self.readexcel.write_excel(row=row,column=8,value='pass')
         log.info('{}用例测试通过'.format(case['title']))
     except AssertionError as e :
         self.readexcel.write_excel(row=row,column=8,value='fail')
         log.error('{}用例测试不通过'.format(case['title']))
         log.exception(e)
         raise  e
Example #15
0
    def test_recharge(self, case):
        # 第一步,准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        # 替换参数中的用户ID
        # case["data"] = case["data"].replace("#member_id#", str(self.member_id))
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        # 在请求体中加入时间戳和签名
        sign_info = HandleSign.generate_sign(getattr(CaseData, "token"))
        data.update(sign_info)

        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(CaseData, "token_value")

        expected = eval(case["expected"])
        row = case["case_id"] + 1
        if case["check_sql"]:
            # 查询当前用户的余额
            sql = "SELECT leave_amount FROM futureloan.member WHERE mobile_phone={}".format(
                conf.get("test_data", "phone"))
            start_money = self.db.find_one(sql)["leave_amount"]

        # 第二步,发送请求,获取结果
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()
        if case["check_sql"]:
            # 查询当前用户的余额
            sql = "SELECT leave_amount FROM futureloan.member WHERE mobile_phone={}".format(
                conf.get("test_data", "phone"))
            end_money = self.db.find_one(sql)["leave_amount"]

        # 第三步,断言比对预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 判断是否需要sql校验
            if case["check_sql"]:
                self.assertEqual(end_money - start_money,
                                 Decimal(str(data["amount"])))

        except AssertionError as e:
            print("预期结果", expected)
            print("实际结果", res)
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例{}执行未通过".format(case["title"]))
            log.exception(e)
            raise e

        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.error("用例{}执行通过".format(case["title"]))
Example #16
0
 def test_withdraw(self, case):
     # 第一步:准备用例数据
     url = conf.get("env", "url") + case["url"]
     case["data"] = case["data"].replace("#phone#",
                                         conf.get("test_data", "phone"))
     case["data"] = case["data"].replace("#pwd#",
                                         conf.get("test_data", "pwd"))
     headers = eval(conf.get("env", "headers"))
     # 判断是否是取现接口,取现接口则加上请求头
     if case["interface"].lower() == "withdraw":
         headers["Authorization"] = self.token_value
         case["data"] = case["data"].replace("#member_id#",
                                             str(self.member_id))
     data = eval(case["data"])
     expected = eval(case["expected"])
     method = case["method"]
     row = case["case_id"] + 1
     # 判断是否需要进行sql校验
     if case["check_sql"]:
         sql = case["check_sql"].format(conf.get("test_data", "phone"))
         start_money = self.db.find_one(sql)["leave_amount"]
     # 第二步:调用接口,获取实际结果
     response = self.request.send(url=url,
                                  method=method,
                                  json=data,
                                  headers=headers)
     res = response.json()
     # 判断是否是登录接口
     if case["interface"].lower() == "login":
         # 提取用户id保存为类属性
         TestWithdraw.member_id = jsonpath.jsonpath(res, "$..id")[0]
         token = jsonpath.jsonpath(res, "$..token")[0]
         token_type = jsonpath.jsonpath(res, "$..token_type")[0]
         # 提取token,保存为类属性
         TestWithdraw.token_value = token_type + " " + token
     # 第三步:断言(比对预期结果和实际结果)
     try:
         self.assertEqual(expected["code"], res["code"])
         self.assertEqual(expected["msg"], res["msg"])
         if case["check_sql"]:
             sql = case["check_sql"].format(conf.get("test_data", "phone"))
             end_money = self.db.find_one(sql)["leave_amount"]
             # 比对取现金额是否正确
             self.assertEqual(Decimal(str(data["amount"])),
                              start_money - end_money)
     except AssertionError as e:
         print("预期结果:", expected)
         print("实际结果:", res)
         self.excel.write_data(row=row, column=8, value="未通过")
         log.error("用例:{},执行未通过".format(case["title"]))
         log.exception(e)
         raise e
     else:
         self.excel.write_data(row=row, column=8, value="通过")
         log.info("用例:{},执行未通过".format(case["title"]))
Example #17
0
    def test_loan(self, case):
        # 准备用例数据
        url = conf.get("env", "url") + case["url"]
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(CaseData, "token_value")
        case["data"] = CaseData.replace_data(case["data"])
        data = eval(case["data"])
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        method = case["method"]
        # 发送请求
        # 第一种:通过新增项目数量进行断言
        # if case["check_sql"] ==1:
        #     sql = "select * from futureloan.loan"
        #     start_count = self.basedata.find_count(sql)

        # 第二种:通过新增项目id进行断言
        if case["check_sql"] == 1:
            sql = "select MAX(id) as id from futureloan.loan"
            start_id = self.basedata.find_one(sql)["id"]

        response = self.request.send_requests(method=method,
                                              url=url,
                                              headers=headers,
                                              json=data)
        res = response.json()
        # 断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 通过新增项目数量断言
            # if case["check_sql"] ==1:
            #     sql = "select * from futureloan.loan"
            #     end_count = self.basedata.find_count(sql)
            #     self.assertEqual(end_count-start_count,1)

            # 通过新增项目id进行断言
            if case["check_sql"] == 1:
                sql = "select MAX(id) as id from futureloan.loan where member_id = {}".format(
                    getattr(CaseData, "member_id"))
                end_id = self.basedata.find_one(sql)["id"]
                self.assertEqual(end_id, start_id + 1)

        except AssertionError as e:
            print("预期结果:", expected)
            print("实际结果:", res)
            self.excel.write_data(row=row, column=8, value="不通过")
            log.error("用例:{}执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            print("预期结果:", expected)
            print("实际结果:", res)
            self.excel.write_data(row=row, column=8, value="通过")
            log.error("用例:{}执行通过".format(case["title"]))
Example #18
0
    def test_withdraw(self, case):
        # 准备用例数据
        url = conf.get("env", "url") + case["url"]
        headers = eval(conf.get("env", "headers"))
        case["data"] = CaseData.replace_data(case["data"])
        if case["interface"] == "withdraw":
            headers["Authorization"] = getattr(CaseData, "token_value")
        data = eval(case["data"])
        expected = eval(case["expected"])
        method = case["method"]
        row = case["case_id"] + 1
        # 发送请求
        # 发送请求前查询数据库leave_amount金额
        if expected["code"] == 0:
            sql = "select leave_amount from futureloan.member where mobile_phone = {}".format(
                conf.get("test_case", "mobile_phone"))
            start_money = self.basedata.find_one(sql)["leave_amount"]
        reponse = self.request.send_requests(method=method,
                                             url=url,
                                             json=data,
                                             headers=headers)
        res = reponse.json()
        # 执行登录用例后,提取返回的token和member_id
        if case["interface"] == "login":
            token_type = jsonpath.jsonpath(res, "$..token_type")[0]
            token = jsonpath.jsonpath(res, "$..token")[0]
            CaseData.token_value = token_type + " " + token
            CaseData.member_id = str(jsonpath.jsonpath(res, "$..id")[0])
        # 断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if expected["code"] == 0 and case["interface"] != "login":
                sql = "select leave_amount from futureloan.member where mobile_phone = {}".format(
                    conf.get("test_case", "mobile_phone"))
                end_money = self.basedata.find_one(sql)["leave_amount"]
                self.assertEqual(start_money - end_money,
                                 Decimal(str(data["amount"])))

        except AssertionError as e:
            print("预期结果:", expected)
            print("实际结果:", res)
            self.excel.write_data(row=row, column=8, value="不通过")
            log.error("用例:{} 执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{} 执行通过".format(case["title"]))
Example #19
0
    def test_recharge(self, case):
        # 第一步:准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        # 替换参数中的用户id
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(CaseDate, "token_value")
        # 在请求头中加入setupclass中提取出来的token
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 第二步:发送请求,获取结果
        # 发送请求之前,获取用余额
        if case["check_sql"]:
            sql = "SELECT leave_amount FROM futureloan.member WHERE mobile_phone={}".format(
                conf.get("test_data", "phone"))
            # 查询当前用户的余额
            start_money = self.db.find_one(sql)["leave_amount"]

        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()
        # 发送请求之后,获取用余额
        if case["check_sql"]:
            sql = "SELECT leave_amount FROM futureloan.member WHERE mobile_phone={}".format(
                conf.get("test_data", "phone"))
            # 查询当前用户的余额
            end_money = self.db.find_one(sql)["leave_amount"]
        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 判断示范需要进行sql校验
            if case["check_sql"]:
                self.assertEqual(end_money - start_money,
                                 Decimal(str(data["amount"])))
        except AssertionError as e:
            print("预期结果:", expected)
            print("实际结果:", res)
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Example #20
0
    def test_main_stream(self, case):
        # 第一步:准备用例数据
        url = conf.get("env", "url") + replace_data(case["url"])
        method = case["method"]
        if case["interface"] == "register":
            # 注册接口,则随机生成一个手机号码
            CaseDate.mobilephone = self.random_phone()
        data = eval(replace_data(case["data"]))
        headers = eval(conf.get("env", "headers"))

        # 判断是否是登录接口,不是登录接口则需要添加token
        if case["interface"] != "login" and case["interface"] != "register":
            headers["Authorization"] = getattr(CaseDate, "token_value")

        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 第二步:发送请求,获取结果
        print("请求参数:", data)
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()
        print("预期结果", expected)
        print("实际结果", res)
        # 发送请求后,判断是否是登陆接口
        if case["interface"].lower() == "login":
            # 提取用户id保存为类属性
            CaseDate.member_id = str(jsonpath.jsonpath(res, "$..id")[0])
            token = jsonpath.jsonpath(res, "$..token")[0]
            token_type = jsonpath.jsonpath(res, "$..token_type")[0]
            # 提取token,保存为类属性
            CaseDate.token_value = token_type + " " + token
        # 判断是否是加标的用例,如果是的则请求标id
        if case["interface"] == "add":
            CaseDate.loan_id = str(jsonpath.jsonpath(res, "$..id")[0])
        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertIn(expected["msg"], res["msg"])
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Example #21
0
 def testcase_audit(self,case):
     # case_id  title  method  url  data  expected  result  chk_sql interface
     #注意请求头每次执行用例后,会被重新赋值所以需要在登录后将请求头保存在另外的类变量
     #各用例模块取名最好单独化,特别是在类变量,避免相互影响
     send_audit =SendRequest()
     title =case['title']
     row=case['case_id']
     method=case['method']
     url=conf.get('env','url')+case['url']
     chk_sql =case['chk_sql']
     data = case['data']
     data=eval(self.replacedata.replacedata(data))
     expected=eval(case['expected'])
     chk_sql=case['chk_sql']
     if chk_sql :
         sql_data_start=self.connet.select_data(sql=self.sql)
         leave_amount_start=sql_data_start['leave_amount']
     res_info=send_audit.sendrequest(method=method,url=url,headers=self.headers_admin,json=data)
     res_info=res_info.json()
     if case['interface'] == 'login':
         print('审核账号登录:',res_info)
         ReplaceData.member_id=jsonpath.jsonpath(res_info,'$..id')[0]
         token = jsonpath.jsonpath(res_info,'$..token')[0]
         token_type = jsonpath.jsonpath(res_info,'$..token_type')[0]
         self.headers_admin['Authorization']='{} {}'.format(token_type,token)
     #审核状态不在待审核状态的ID,重新审核一次
     if case['case_id']==4:
          print('第二次审核开始')
          print('审核数据:',data)
          res_info=send_audit.sendrequest(method=method,url=url,headers=self.headers_admin,json=data)
          res_info=res_info.json()
     try :
         print('实际结果:{}'.format(res_info))
         print('期望结果:{}'.format(expected))
         if chk_sql :
             sql_data_end=self.connet.select_data(sql=self.sql)
             leave_amount_end=sql_data_end['leave_amount']
             #self.assertEqual(Decimal(str(data['amount'])),(leave_amount_start-leave_amount_end))
         self.assertEqual(expected['code'],res_info['code'])
         self.assertEqual(expected['msg'],res_info['msg'])
         self.readexcel.write_excel(row=row,column=8,value='pass')
         log.info('{}用例测试通过'.format(case['title']))
     except AssertionError as e :
         self.readexcel.write_excel(row=row,column=8,value='fail')
         log.error('{}用例测试不通过'.format(case['title']))
         log.exception(e)
         raise  e
 def test01_delete_online_goods(self):
     # try:
     # 定位个人中心,然后点击
     goods = B.find_element(P.goods)
     B.click(goods)
     # 定位个人中心页面中的个人中心字样
     time.sleep(2)
     goodscentre = B.find_element(P.goodscentre)
     B.click(goodscentre)
     time.sleep(2)
     goodsdata = B.find_element(P.goodsdata)
     B.click(goodsdata)
     time.sleep(3)
     B.click(B.find_element(P.onlinegoods_platform))
     time.sleep(1)
     B.click(B.find_element(P.gouxuan_online))
     time.sleep(1)
     B.hold(B.find_element(P.piliang_online))
     time.sleep(1)
     #下架
     B.click(B.find_element(P.piliang_xiajia))
     time.sleep(1)
     # B.refresh()
     time.sleep(2)
     # B.click(B.find_element(P.gouxuan_online))
     # time.sleep(2)
     a = B.find_element(P.piliang_2)
     B.hold(a)
     #删除
     time.sleep(1)
     B.click(B.find_element(P.piliang_delete))
     time.sleep(1)
     # B.click(B.find_element(P.delete_alert))
     B.click(B.find_element(P.delete_confirm))
     del_suc_text = B.get_text(P.del_suc_text)
     print(del_suc_text)
     try:
         assert del_suc_text == "商品删除成功"
     except Exception as e:
         # raise NameError("当前页面不包含%s" % (login_sucees_text))
         log.error('用例%s执行不通过' % (sys._getframe().f_code.co_name))
         # # format格式化,把case中的title写入{}中
         log.exception(e)
         raise e
     else:
         log.info('用例%s执行通过' % (sys._getframe().f_code.co_name))
Example #23
0
class TestRecharge(unittest.TestCase):
    excel = Readexcel(os.path.join(data_dir, "api_cases_excel.xlsx"), "recharge")
    cases = excel.read_data()
    send = HandleRequests()
    basedata = HandleDB()

    @classmethod
    def setUpClass(cls):
        url = conf.get("env", "url") + "/member/login"
        data = {
            "mobile_phone": conf.get("test_case", "mobile_phone"),
            "pwd": conf.get("test_case", "pwd")
        }
        headers = eval(conf.get("env", "headers"))
        method = "post"
        login_response = cls.send.send_requests(url=url, method=method, headers=headers, json=data)
        data = login_response.json()
        token_type = jsonpath.jsonpath(data, "$..token_type")[0]
        token = jsonpath.jsonpath(data, "$..token")[0]
        cls.token_value = token_type + " " + token
        cls.member_id = jsonpath.jsonpath(data, "$..id")[0]

    @data(*cases)
    def test_recharge(self, case):
        # 准备用例数据
        url = conf.get("env", "url") + case["url"]
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = self.token_value
        case["data"] = case["data"].replace("#member_id#", str(self.member_id))
        data = eval(case["data"])
        method = case["method"]
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 发送请求
        if eval(case["expected"])["code"] == 0:
            sql = "select leave_amount from futureloan.member where mobile_phone={}".format(
                conf.get("test_case", "mobile_phone"))
            pre_data = self.basedata.find_one(sql)["leave_amount"]

        response = self.send.send_requests(method=method, url=url, json=data, headers=headers)
        res = response.json()
        # 断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if expected["code"] == 0:
                end_data = self.basedata.find_one(sql)["leave_amount"]
                self.assertEqual(Decimal(str(data["amount"])), end_data - pre_data)
        except AssertionError as e:
            print("预期结果:", expected)
            print("实际结果:,", res)
            self.excel.write_data(row=row, column=8, value="不通过")
            log.error("用例:{} ,执行".format(case["title"]) + color.white_red("不通过"))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{} ,执行".format(case["title"]) + color.white_green("通过"))
Example #24
0
    def test_register(self, case):
        # 准备用例数据
        url = conf.get("env", "url") + case["url"]
        headers = eval(conf.get("env", "headers"))
        case["data"] = case["data"].replace("#phone#",self.randam_phone())
        data = eval(case["data"])
        method = case["method"]
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        # 发送请求
        response = self.send.send_requests(method=method, url=url, json=data, headers=headers)
        res = response.json()
        id = jsonpath.jsonpath(res, "$..id")
        # 读取数据库的数据
        sql = "select * from futureloan.member where mobile_phone = {}".format(self.randam_phone())
        sql_data = self.basedata.find_all(sql)
        # 断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if expected["code"] == 0:
                for i in sql_data:
                    bd_phone = i["mobile_phone"]
                    bd_type = i["type"]
                    bd_reg_name = i["reg_name"]
                    bd_id = i["id"]
                    self.assertEqual(expected["mobile_phone"], bd_phone)
                    self.assertEqual(expected["type"], bd_type)
                    self.assertEqual(expected["reg_name"], bd_reg_name)
                    self.assertEqual(0, i["leave_amount"])
                    self.assertEqual(id, bd_id)

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="不通过")
            log.error("用例:{} ,执行".format(case["title"]) + color.white_red("不通过"))
            log.exception(e)
            raise e
        else:
            print("预期结果:", expected)
            print("实际结果:", res)
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{} ,执行".format(case["title"]) + color.white_green("通过"))
Example #25
0
    def test_main_stream(self, case):
        # 准备用例数据
        url = conf.get("env", "url") + CaseData.replace_data(case["url"])
        headers = eval(conf.get("env", "headers"))
        if case["interface"] != "login" and case["interface"] != "register":
            headers["Authorization"] = getattr(CaseData, "token_value")
        if case["interface"] == "register":
            CaseData.mobilephone = self.random_phone()
        case["data"] = str(CaseData.replace_data(case["data"]))
        data = eval(case["data"])
        method = case["method"]
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 发送请求并获取结果
        response = self.request.send_requests(url=url,
                                              method=method,
                                              headers=headers,
                                              json=data)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)
        # 登录后提取token和member_id并保存为类属性
        if case["interface"] == "login":
            token_type = jsonpath.jsonpath(res, "$..token_type")[0]
            token = jsonpath.jsonpath(res, "$..token")[0]
            CaseData.token_value = token_type + " " + token
            CaseData.member_id = str(jsonpath.jsonpath(res, "$..id")[0])
        # 加标后提取项目id并保存为类属性
        if case["interface"] == "add":
            CaseData.loan_id = str(jsonpath.jsonpath(res, "$..id")[0])

        # 断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="不通过")
            log.error("用例:{} 执行不通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{} 执行通过".format(case["title"]))
Example #26
0
    def test001_reset_pwd(self, case):
        url = conf.get("env", "url") + case["url"]
        # print(url)
        method = case['method']
        # print(method)
        data = eval(case['data'])
        # print(data)
        # eval这个内置函数的作用:执行一个字符串表达式,并且返回执行后的结果
        headers = eval(conf.get("env", "headers"))
        # print(headers)
        # 从配置文件文件config.ini中取header等常用请求头信息或者接口参数
        expected = eval(case['expected'])
        # print(expected)
        # 从excel取expected预期结果内容
        row = case['case_id'] + 1
        # 每跑一行,case_id + 1

        # 第二步,发送接口请求
        response = self.request.send(method=method,
                                     url=url,
                                     headers=headers,
                                     data=data)
        print(response.text)
        result = response.json()
        print(result)

        # 第三步:接口的断言
        try:  # 期待值和实际结果值对比断言
            self.assertEqual(expected['code'], result['code'])
            self.assertEqual(expected['msg'], result['msg'])
        except Exception as e:
            # 定义异常,异常如何
            self.excel.write_data(row, column=8, value='未通过')
            # 写入未通过结果
            log.error('用例{}执行不通过'.format(case['title']))
            # format格式化,把case中的title写入{}
            log.exception(e)
            # 抛出异常
            raise e
            # 手动触发异常
        else:  # 否则就正常,正常又如何
            self.excel.write_data(row=row, column=8, value='通过')
            log.info('用例{}执行通过'.format(case['title']))
Example #27
0
    def test_audit(self, case):
        # 第一步,准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        # 替换参数中的用户ID
        # case["data"] = case["data"].replace("#loan_id#", self.loan_id)
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        # data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(CaseData, "admin_token_value")
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        # 第二步,发送请求,获取结果
        response = self.request.send(url=url, method=method, json=data, headers=headers)
        res = response.json()
        if res["code"] == 0 and case["title"] == "审核通过":
            CaseData.pass_loan_id = str(data["loan_id"])

        # 第三步,断言比对预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if case["check_sql"]:
                sql = replace_data(case["check_sql"])
                status = self.db.find_one(sql)["status"]
                self.assertEqual(expected["status"], status)


        except AssertionError as e:
            print("预期结果", expected)
            print("实际结果", res)
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例{}执行未通过".format(case["title"]))
            log.exception(e)
            raise e

        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.error("用例{}执行通过".format(case["title"]))
 def testcase_withdraw(self, case):
     # case_id  title  method  url  data  expected  result  chk_sql interface
     row = case['case_id'] + 1
     method = case['method']
     url = self.base_url + case['url']
     data = case['data']
     data = eval(self.replacedata.replacedata(data))
     expected = eval(case['expected'])
     chk_sql = case['chk_sql']
     if chk_sql:
         sql_data_start = self.connet.select_data(sql=self.sql)
         leave_amount_start = sql_data_start['leave_amount']
     res_info = self.send.sendrequest(method=method,
                                      url=url,
                                      headers=self.headers,
                                      json=data)
     res_info = res_info.json()
     if case['interface'] == 'login':
         print(res_info)
         ReplaceData.member_id = jsonpath.jsonpath(res_info, '$..id')[0]
         token = jsonpath.jsonpath(res_info, '$..token')[0]
         token_type = jsonpath.jsonpath(res_info, '$..token_type')[0]
         self.headers['Authorization'] = '{} {}'.format(token_type, token)
     try:
         print('实际结果:{}'.format(res_info))
         print('期望结果:{}'.format(expected))
         if chk_sql:
             sql_data_end = self.connet.select_data(sql=self.sql)
             leave_amount_end = sql_data_end['leave_amount']
             self.assertEqual(Decimal(str(data['amount'])),
                              (leave_amount_start - leave_amount_end))
         self.assertEqual(expected['code'], res_info['code'])
         self.assertEqual(expected['msg'], res_info['msg'])
         self.readexcel.write_excel(row=row, column=8, value='pass')
         log.info('{}用例测试通过'.format(case['title']))
     except AssertionError as e:
         self.readexcel.write_excel(row=row, column=8, value='fail')
         log.error('{}用例测试不通过'.format(case['title']))
         log.exception(e)
         raise e
Example #29
0
    def test_login(self, case):
        """登陆的测试用例"""
        # 第一步:准备用例数据

        url = conf.get("evn", "url") + case["url"]
        headers = eval(conf.get("evn", "headers"))
        method = case["method"]

        # 登陆账号使用配置文件里面预设值的
        TestLogin.mobile = eval(conf.get("test_data", "mobile"))
        case["data"] = case["data"].replace("#mobile#", str(self.mobile))

        TestLogin.password = eval(conf.get("test_data", "password"))
        case["data"] = case["data"].replace("#password#", str(self.password))

        data = eval(case["data"])

        expected = eval(case["expected"])
        row = case["case_id"] + 1

        #第二步:发送请求,获取结果
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()

        # 第三步:断言,回写数据
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Example #30
0
    def test_invest(self, case):
        # 第一步,准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        headers = eval(conf.get("env", "headers"))
        if case["interface"] != "login":
            headers["Authorization"] = getattr(CaseData, "token_value")
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 第二步,发送请求,获取结果
        response = self.request.send(url=url,
                                     method=method,
                                     json=data,
                                     headers=headers)
        res = response.json()
        if case["interface"].lower() == "login":
            CaseData.member_id = str(jsonpath.jsonpath(res, "$..id")[0])
            token = jsonpath.jsonpath(res, "$..token")[0]
            token_type = jsonpath.jsonpath(res, "$..token_type")[0]
            CaseData.token_value = token_type + " " + token

        if case["interface"] == "add":
            CaseData.loan_id = str(jsonpath.jsonpath(res, "$..id")[0])

        # 第三步,断言比对预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            # self.assertEqual(expected["msg"], res["msg"])
            self.assertIn(expected["msg"], res["msg"])
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            log.error("用例{}执行未通过".format(case["title"]))
            log.exception(e)
            raise e

        else:
            self.excel.write_data(row=row, column=8, value="通过")
            log.error("用例{}执行通过".format(case["title"]))