def test_login(self, case):

        # 拼接url地址
        url = conf.get("env", "url") + case.url
        # 行数等于用例编号+1
        self.row = case.case_id + 1
        # 向接口发送请求
        response = self.request.request(method=case.method,
                                        url=url,
                                        data=eval(case.request_data))
        time.sleep(2)

        # 该打印的内容会显示在报告中
        print("")
        print("请求地址--> {}".format(url))
        print("请求参数--> {}".format(case.request_data))
        print("期望结果--> {}".format(case.expected_data))
        print("服务器响应数据--> {}".format(response.json()))

        res = response.json()

        if "登录成功" in str(res):
            res = {
                'data': {
                    'id': res['data']['id'],
                    'rid': res['data']['rid'],
                    'username': res['data']['username'],
                    'mobile': res['data']['mobile'],
                    'email': res['data']['email']
                },
                'meta': res['meta']
            }
            output_log.info('处理后的服务器返回数据 --> {}'.format(res))

        try:
            self.assertEqual(eval(case.expected_data), res)
        except AssertionError as e:
            result = 'FAIL'
            output_log.exception(e)  # 将异常信息记录到日志
            raise e
        else:
            result = 'PASS'
            output_log.info("预期结果:{}, 实际结果:{}, 断言结果:{}".format(
                case.expected_data, res, result))
        finally:
            # 向Excel回写服务器返回结果
            self.wb.write_data(row=self.row,
                               column=9,
                               value=str(response.json()))
            # 向Excel回写断言结果
            self.wb.write_data(row=self.row, column=10, value=result)
Exemple #2
0
    def request(self,
                method,
                url,
                params=None,
                data=None,
                headers=None,
                cookies=None,
                json=None):

        method = method.lower()
        if method == "post":
            # 判断是否使用json来传参(适用于接口项目有使用json传参)
            if json:
                output_log.info("正在发送请求,请求地址:{}, 请求参数:{}".format(url, json))
                return self.session.post(url=url,
                                         json=json,
                                         headers=headers,
                                         cookies=cookies)
            else:
                output_log.info("正在发送请求,请求地址:{}, 请求参数:{}".format(url, data))
                return self.session.post(url=url,
                                         data=data,
                                         headers=headers,
                                         cookies=cookies)
        elif method == "get":
            output_log.info("正在发送请求,请求地址:{}, 请求参数:{}".format(url, params))
            return self.session.get(url=url,
                                    params=params,
                                    headers=headers,
                                    cookies=cookies)
        elif method == 'put':
            output_log.info("正在发送请求,请求地址:{}, 请求参数:{}".format(url, data))
            return self.session.put(url=url,
                                    data=data,
                                    headers=headers,
                                    cookies=cookies)
        elif method == 'delete':
            output_log.info("正在发送请求,请求地址:{}, 请求参数:{}".format(url, data))
            return self.session.delete(url=url,
                                       headers=headers,
                                       cookies=cookies)
Exemple #3
0
 def tearDownClass(cls) -> None:
     output_log.info("============================== 修改用户状态接口测试执行完毕 ==============================")
     cls.request.close()
Exemple #4
0
 def setUpClass(cls) -> None:
     output_log.info("============================== 开始执行修改用户状态接口测试 ==============================")
     cls.request = HTTPRequest()
Exemple #5
0
    def test_add_user(self, case):

        # 拼接url地址
        url = conf.get("env", "url") + case.url
        # 行数等于用例编号+1
        self.row = case.case_id + 1

        # 获取token
        token = get_token(eval(case.token_data))

        # 拼接headers
        headers = {'Authorization': token}

        # 由于是注册接口 注册使用的用户名每次需要更改 所以使用参数化 使用随机名称来替换
        username = rand_name()
        case.request_data = case.request_data.replace('#username', username)

        # 向接口发送请求
        response = self.request.request(method=case.method,
                                        url=url,
                                        headers=headers,
                                        data=eval(case.request_data))
        time.sleep(2)

        # 该打印的内容会显示在报告中
        print("")
        print("请求地址--> {}".format(url))
        print("请求参数--> {}".format(case.request_data))
        print("期望的返回结果--> {}".format(case.expected_data))
        print("服务器响应数据--> {}".format(response.json()))

        res = response.json()

        if '创建成功' in str(res):
            sql = 'SELECT mg_id, role_id, mg_time FROM sp_manager WHERE mg_name="{}"'.format(
                username)
            mg_id, role_id, create_time = self.db.find_one(sql=sql)
            expected_data = {
                'data': {
                    'id': mg_id,
                    'username': username,
                    'role_id': role_id,
                    'create_time': create_time
                },
                'meta': {
                    'msg': '创建成功',
                    'status': 201
                }
            }

        try:
            self.assertEqual(expected_data, res)
        except AssertionError as e:
            result = 'FAIL'
            output_log.exception(e)  # 将异常信息记录到日志
            raise e
        else:
            result = 'PASS'
            output_log.info("预期结果:{}, 实际结果:{}, 断言结果:{}".format(
                expected_data, res, result))
        finally:
            # 向Excel回写服务器返回结果
            self.wb.write_data(row=self.row,
                               column=10,
                               value=str(response.json()))
            # 向Excel回写断言结果
            self.wb.write_data(row=self.row, column=11, value=result)

            # 由于excel用例的期望结果 也采用了参数化 为了直观查看 在测试完成后 将期望结果的具体值回写到excel
            self.wb.write_data(row=self.row,
                               column=9,
                               value=str(expected_data))
Exemple #6
0
 def setUpClass(cls) -> None:
     output_log.info(
         "============================== 开始执行新增用户接口测试 =============================="
     )
     cls.request = HTTPRequest()
     cls.db = ExecuteMysql()
Exemple #7
0
 def test_login(self, case):
     output_log.info('正在执行登录测试')
Exemple #8
0
 def tearDown(self) -> None:
     output_log.info('该条用例执行完成')
Exemple #9
0
 def setUp(self):
     output_log.info('开始测试本条用例')