Ejemplo n.º 1
0
    def test_is_email_register(self, cases):
        self.__dict__['_testMethodDoc'] = str(
            cases["case_id"]) + "-" + cases["case_tittle"]
        myLogger.info("==================用例{}执行开始==================".format(
            str(cases["case_id"])))
        if cases["url"].find(REPLACE_NOREGISTER_EMAIL_MARK) != -1:
            email = get_new_email()
            cases = replace_mark_with_data(cases,
                                           REPLACE_NOREGISTER_EMAIL_MARK,
                                           email)
        elif cases["url"].find(REPLACE_REGISTER_EMAIL_MARK) != -1:
            email = red_conf.get("register_user", "email")
            cases = replace_mark_with_data(cases, REPLACE_REGISTER_EMAIL_MARK,
                                           email)
        else:
            pass
        response_is_email_register = set_request(cases["url"], cases["method"])
        myLogger.info("实际结果为:{}".format(response_is_email_register.json()))

        expected = json.loads(cases["expect_res"])
        myLogger.info("期望结果为:{}".format(expected))

        # 断言
        try:
            self.assertEqual(response_is_email_register.status_code,
                             cases['status_code'])
            self.assertEqual(response_is_email_register.json()["email"],
                             expected["email"])
            self.assertEqual(response_is_email_register.json()["count"],
                             expected["count"])
        except AssertionError:
            myLogger.info("用例执行失败")
            raise
        myLogger.info("==================用例结束==================")
Ejemplo n.º 2
0
 def setUpClass(cls) -> None:
     myLogger.info("==================确认用户注册模块接口测试开始==================")
     register_username = red_conf.get("register_user", "username")
     register_email = red_conf.get("register_user", "email")
     register_pwd = red_conf.get("register_user", "password")
     request_register_data = {
         "username": register_username,
         "email": register_email,
         "password": register_pwd,
         "password_confirm": register_pwd
     }
     register_url = "/user/register/"
     set_request(register_url, "POST", request_register_data)
Ejemplo n.º 3
0
    def test_login(self,cases):
        self.__dict__['_testMethodDoc'] = str(cases["case_id"]) + "-" + cases["case_tittle"]
        myLogger.info("==================用例{}执行开始==================".format(str(cases["case_id"])))
        register_username = red_conf.get("register_user", "username")
        register_password = red_conf.get("register_user", "password")
        if cases["request_data"].find(REPLACE_REGISTER_USERNAME_MARK) != -1 or cases["request_data"].find(
                REPLACE_REGISTER_PASSWORD_MARK) != -1 or cases["request_data"].find(REPLACE_NO_REGISTER_USERNAME_MARK) \
                != -1 or cases["request_data"].find(REPLACE_NO_REGISTER_PASSWORD_MARK) != -1:
            no_register_username = get_new_username(int(cases['random_username_len']))
            no_register_password = get_password(int(cases['random_password_len']))
            cases = replace_mark_with_data(cases, REPLACE_REGISTER_USERNAME_MARK, register_username)
            cases = replace_mark_with_data(cases, REPLACE_REGISTER_PASSWORD_MARK, register_password)
            cases = replace_mark_with_data(cases, REPLACE_NO_REGISTER_USERNAME_MARK, no_register_username)
            cases = replace_mark_with_data(cases, REPLACE_NO_REGISTER_PASSWORD_MARK, no_register_password)
        if cases['check_sql']:
            user_id = db.select_one_data(cases['check_sql'])["id"]
            cases = replace_mark_with_data(cases, REPLACE_USER_ID_MARK, str(user_id))
            myLogger.info("替换后的最终测试数据:{}".format(cases))

        expected = json.loads(cases['expect_res'])
        myLogger.info("预期结果:{}".format(expected))

        request_data = json.loads(cases['request_data'])
        response_login = set_request(cases['url'], cases["method"], request_data)
        myLogger.info("实际结果:{}".format(response_login.json()))

        # 断言
        try:
            self.assertEqual(response_login.status_code, cases['status_code'])
            if cases['check_sql']:
                self.assertIsNotNone(response_login.json()["token"])
                self.assertEqual(response_login.json()["user_id"], expected["user_id"])
                self.assertEqual(response_login.json()["username"], expected["username"])
                try:
                    if expected["non_field_errors"]:
                        self.assertEqual(response_login.json()["non_field_errors"], expected["non_field_errors"])
                    elif expected["username"]:
                        self.assertEqual(response_login.json()["username"], expected["username"])
                    elif expected["passwprd"]:
                        self.assertEqual(response_login.json()["password"], expected["password"])
                except KeyError:
                    pass

        except AssertionError:
            myLogger.info("用例执行失败")
            raise
 def setUpClass(cls) -> None:
     myLogger.info("==================项目接口测试开始==================")
     user, password = get_old_user()
     response_login = set_request("/user/login/", "post", {
         "username": user,
         "password": password
     })
     myLogger.info("登录的响应数据:{}".format(response_login.json()))
     setattr(EnvData, "token",
             jsonpath(response_login.json(), "$..token")[0])
     myLogger.info("登录用户token:{}".format(EnvData.token))
 def tearDownClass(cls) -> None:
     myLogger.info("==================注册模块接口测试结束==================")
 def tearDown(self) -> None:
     myLogger.info("==================接口用例执行结束==================")
    def test_register(self, cases):
        self.__dict__['_testMethodDoc'] = str(cases["case_id"]) + "-" + cases["case_tittle"]
        myLogger.info("==================用例{}执行开始==================".format(str(cases["case_id"])))
        if cases["request_data"].find("#username#") != -1 or cases["request_data"].find("#password#") or cases["request_data"].find("#email#") != -1:
            username = get_new_username(int(cases["random_username_len"]))
            password = get_password(int(cases["random_password_len"]))
            email = get_new_email()
            cases = replace_mark_with_data(cases, REPLACE_USERNAME_MARK, username)
            cases = replace_mark_with_data(cases, REPLACE_PASSWORD_MARK, password)
            cases = replace_mark_with_data(cases, REPLACE_EMAIL_MARK, email)

        response_register = set_request(cases["url"], cases["method"], cases["request_data"])
        myLogger.info("实际结果为:{}".format(response_register.json()))
        if cases["check_sql"]:
            user_id = db.select_one_data(cases["check_sql"])["id"]
            cases = replace_mark_with_data(cases, REPLACE_ID_MARK, str(user_id))
            myLogger.info("最终的测试数据为:{}".format(cases))
        expected = json.loads(cases['expect_res'])
        myLogger.info("期望结果为:{}".format(expected))

        # 断言
        try:
            self.assertEqual(response_register.status_code, cases['status_code'])
            if cases["check_sql"]:
                self.assertEqual(response_register.json()["id"], int(expected["id"]))
                self.assertEqual(response_register.json()["username"], expected["username"])
            try:
                if expected["non_field_errors"]:
                    self.assertEqual(response_register.json()["non_field_errors"], expected["non_field_errors"])
                elif expected["username"]:
                    self.assertEqual(response_register.json(["usrename"]), expected["username"])
                elif expected["email"]:
                    self.assertEqual(response_register.json(["email"]), expected["email"])
                elif expected["password"]:
                    self.assertEqual(response_register.json(["password"]), expected["password"])
                    self.assertEqual(response_register.json()["password_confirm"], expected["password_confirm"])
            except KeyError:
                pass
        except AssertionError:
            myLogger.info("用例执行失败")
            raise
        myLogger.info("==================用例结束==================")
 def setUp(self) -> None:
     myLogger.info("==================接口用例执行开始==================")
 def setUpClass(cls) -> None:
     myLogger.info("==================注册模块接口测试开始==================")
Ejemplo n.º 10
0
def set_request(url, method, data=None, params_format="json", token=None):
    '''
    2、动态发送请求:
    1.1 如果传入"POST",发送post请求
    1.2 如果传入"GET", 发送get请求
    1.3 考虑token鉴权
    :param params_format: 请求数据的格式---->application/x-www-form-urlencoded为data,类型为dict;application/json为就json
                          类型为dict
    :param url:请求地址
    :param method:请求方式
    :param data:请求数据
    :param token:token鉴权
    :return:请求后服务器返回的响应
    '''
    resp = None
    headers = __handle_headers(token)
    url = __pre_url(url)
    data = __per_data(data)
    myLogger.info("请求头为:{}".format(headers))
    myLogger.info("请求方法为:{}".format(method))
    myLogger.info("请求url为:{}".format(url))
    myLogger.info("请求数据为:{}".format(data))
    method = method.upper()
    if method == "POST":
        if params_format == "json":
            resp = requests.post(url, json=data, headers=headers)
        else:
            resp = requests.post(url, data=data, headers=headers)
    elif method == "GET":
        resp = requests.get(url, data, headers=headers)
    myLogger.info("响应状态码:{}".format(resp.status_code))
    myLogger.info("响应数据:{}".format(resp.json()))
    return resp
    def test_projects(self, cases):
        self.__dict__['_testMethodDoc'] = str(
            cases["case_id"]) + "-" + cases["case_tittle"]
        myLogger.info("==================用例{}执行开始==================".format(
            str(cases["case_id"])))
        projects_rename = red_conf.get("project", "name")

        # 以请求数据中的数据标记为源头,初步替换真实数据
        if cases['request_data'].find(REPLACE_PROJECTS_NAME_MARK
                                      ) != -1 or cases['request_data'].find(
                                          REPLACE_PROJECTS_LEADER_MARK
                                      ) != -1 or cases['request_data'].find(
                                          REPLACE_PROJECTS_TESTER_MARK
                                      ) != -1 or cases['request_data'].find(
                                          REPLACE_PROJECTS_PROGRAMMER_MARK
                                      ) != -1 or cases['request_data'].find(
                                          REPLACE_PROJECTS_PUBLISH_APP_MARK
                                      ) != -1 or cases['request_data'].find(
                                          REPLACE_PROJECTS_DESC_MARK) != -1:
            name = get_new_projects_datas(int(cases['random_name_len']))
            leader = get_new_projects_datas(int(cases['random_leader_len']))
            tester = get_new_projects_datas(int(cases['random_tester_len']))
            programmer = get_new_projects_datas(
                int(cases['random_programmer_len']))
            publish_app = get_new_projects_datas(
                int(cases['random_publish_app_len']))
            desc = get_new_projects_datas(int(cases['random_desc_len']))
            cases = replace_mark_with_data(cases, REPLACE_PROJECTS_NAME_MARK,
                                           name)
            cases = replace_mark_with_data(cases, REPLACE_PROJECTS_LEADER_MARK,
                                           leader)
            cases = replace_mark_with_data(cases, REPLACE_PROJECTS_TESTER_MARK,
                                           tester)
            cases = replace_mark_with_data(cases,
                                           REPLACE_PROJECTS_PROGRAMMER_MARK,
                                           programmer)
            cases = replace_mark_with_data(cases,
                                           REPLACE_PROJECTS_PUBLISH_APP_MARK,
                                           publish_app)
            cases = replace_mark_with_data(cases, REPLACE_PROJECTS_DESC_MARK,
                                           desc)
            if cases['request_data'].find(REPLACE_PROJECTS_RENAME_MARK) != -1:
                cases = replace_mark_with_data(cases,
                                               REPLACE_PROJECTS_RENAME_MARK,
                                               projects_rename)

        # 发送请求
        request_data = json.loads(cases['request_data'])
        response_projects = set_request(cases['url'],
                                        cases['method'],
                                        request_data,
                                        token=EnvData.token)

        # 继续替换期望结果中的数据为真实数据
        if cases['check_sql']:
            project_id = db.select_one_data(cases['check_sql'])['id']
            project_create_time = db.select_one_data(
                cases['check_sql'])['create_time']
            cases = replace_mark_with_data(cases, REPLACE_PROJECTS_DB_ID_MARK,
                                           str(project_id))
            cases = replace_mark_with_data(
                cases, REPLACE_PROJECTS_DB_GREATE_TIME_MARK,
                str(project_create_time))
            myLogger.info("数据替换完毕")

        # 处理期望结果
        expected = json.loads(cases['expect_res'])
        try:
            if expected['create_time']:
                expected['create_time'] = handle_time(expected['create_time'])
        except KeyError:
            pass
        myLogger.info("期望结果为:{}".format(expected))
        myLogger.info("实际结果为:{}".format(response_projects.json()))

        # 断言
        try:
            self.assertEqual(response_projects.status_code,
                             cases['status_code'])
            self.assertEqual(response_projects.json(), expected)

        except AssertionError:
            myLogger.info("用例执行失败")
            raise
 def setUp(self) -> None:
     myLogger.info("==================项目接口测试用例执行开始==================")