Esempio n. 1
0
    def test_volume_snap(self, case_data):
        # 参数化修改test_add_project 注释
        for k, v in enumerate(case_dict["test_case"]):  # 遍历用例文件中所有用例的索引和值
            try:
                if case_data == v:
                    # 修改方法的__doc__在下一次调用时生效,此为展示在报告中的用例描述
                    Test_Volume_Snap.test_volume_snap.__doc__ = case_dict[
                        "test_case"][k + 1]["info"]
            except IndexError:
                pass

        if not self.result["result"]:
            # 查看类变量result的值,如果未False,则前一接口校验错误,此接口标记未失败,节约测试时间
            pytest.xfail("前置接口测试失败,此接口标记为失败")
        if case_data["request_type"] == "get":
            time.sleep(case_data["sleep_time"])

        code, data = request_send.send_request(
            case_data, case_dict["testinfo"].get("host"),
            case_dict["testinfo"].get("address"),
            str(case_dict["testinfo"].get("port")), self.relevance, CASE_PATH,
            self.result)
        expected_code = case_data["check"][0]["expected_code"]
        if case_data["request_type"] == "post":
            snapshot_id = data["snapshot"]["id"]
            self.log.info("保存volume_snapshot_id到全局配置文件")
            conf = Config()
            conf.set_conf("test_data", "volume_snapshot_id", snapshot_id)
        self.Assert.assert_code(code, expected_code)
        check_result.check(case_data["test_name"], case_data["check"][0], code,
                           data, self.relevance, CASE_PATH, self.result)
Esempio n. 2
0
    def test_subnet(self, case_data):

        # 参数化修改test_subnet注释
        for k, v in enumerate(case_dict["test_case"]):  # 遍历用例文件中所有用例的索引和值
            try:
                if case_data == v:
                    # 修改方法的__doc__在下一次调用时生效,此为展示在报告中的用例描述
                    Test_Subnet.test_subnet.__doc__ = case_dict["test_case"][
                        k + 1]["info"]
            except IndexError:
                pass

        if not self.result["result"]:
            # 查看类变量result的值,如果未False,则前一接口校验错误,此接口标记未失败,节约测试时间
            pytest.xfail("前置接口测试失败,此接口标记为失败")

        #send_request(_data, _host, _address,_port, _relevance, path, _success)
        code, data = request_send.send_request(
            case_data, case_dict["testinfo"].get("host"),
            case_dict["testinfo"].get("address"),
            str(case_dict["testinfo"].get("port")), self.relevance, CASE_PATH,
            self.result)
        expected_code = case_data["check"][0]["expected_code"]
        subnet_id = data["subnet"]["id"]
        self.Assert.assert_code(code, expected_code)
        self.log.info("保存subnet_id到全局配置文件")
        conf = Config()
        conf.set_conf("test_data", "subnet_id", subnet_id)
        check_result.check(case_data["test_name"], case_data["check"][0], code,
                           data, self.relevance, CASE_PATH, self.result)
Esempio n. 3
0
    def test_volume_snap_delete(self, case_data):

        for k, v in enumerate(case_dict["test_case"]):  # 遍历用例文件中所有用例的索引和值
            try:
                if case_data == v:
                    # 修改方法的__doc__在下一次调用时生效,此为展示在报告中的用例描述
                    Test_Volume_Snap_Delete.test_volume_snap_delete.__doc__ = case_dict[
                        "test_case"][k + 1]["info"]
            except IndexError:
                pass

        if not self.result["result"]:
            # 查看类变量result的值,如果未False,则前一接口校验错误,此接口标记未失败,节约测试时间
            pytest.xfail("前置接口测试失败,此接口标记为失败")

        # 设置延时,等待快照删除完成
        if case_data["request_type"] == "get":
            sleep(case_data["sleep_time"])

        code, data = request_send.send_request(
            case_data, case_dict["testinfo"].get("host"), case_dict["testinfo"].get("address"), str(
                case_dict["testinfo"].get("port")), self.relevance, CASE_PATH, self.result)

        # 结果校验
        check_result.check(
            case_data["test_name"],
            case_data["check"][0],
            code,
            data,
            self.relevance,
            CASE_PATH,
            self.result)
Esempio n. 4
0
def api_send_check(case_data, project_dict, relevance, rel, _path, result):
    """
    接口请求并校验结果
    :param case_data:  单条用例
    :param project_dict:  用例文件对象
    :param relevance:  关联值实例对象
    :param _path:  case目录
    :param rel:  关联值类对象
    :param result:  全局测试结果
    :return:
    """
    # 发送请求并获取code, data
    code, data = request_send.send_request(
        case_data, project_dict["testinfo"].get("host"),
        project_dict["testinfo"].get("address"), relevance, _path, result)
    # 校验测试结果
    with allure.step("校验测试结果"):
        pass
    if isinstance(case_data["check"], list):
        for i in case_data["check"]:
            check_result.check(case_data["test_name"], i, code, data,
                               relevance, _path, result)
    else:
        check_result.check(case_data["test_name"], case_data["check"], code,
                           data, relevance, _path, result)
    # 记录关联值
    Init.get_relevance(data, case_data["relevance"], rel)
    def test_delete_volume(self, case_data):

        # 参数化修改test_add_project 注释
        for k, v in enumerate(case_dict["test_case"]):  # 遍历用例文件中所有用例的索引和值
            try:
                if case_data == v:
                    # 修改方法的__doc__在下一次调用时生效,此为展示在报告中的用例描述
                    Test_Delete_volume.test_delete_volume.__doc__ = case_dict[
                        "test_case"][k + 1]["info"]
            except IndexError:
                pass

        if not self.result["result"]:
            # 查看类变量result的值,如果未False,则前一接口校验错误,此接口标记未失败,节约测试时间
            pytest.xfail("前置接口测试失败,此接口标记为失败")
        if case_data["request_type"] == "get":
            time.sleep(case_data["sleep_time"])
        #send_request(_data, _host, _address,_port, _relevance, path, _success)
        code, data = request_send.send_request(
            case_data, case_dict["testinfo"].get("host"),
            case_dict["testinfo"].get("address"),
            str(case_dict["testinfo"].get("port")), self.relevance, CASE_PATH,
            self.result)
        check_result.check(case_data["test_name"], case_data["check"][0], code,
                           data, self.relevance, CASE_PATH, self.result)
Esempio n. 6
0
    def test_network(self, case_data):
        # 参数化修改test_network注释
        for k, v in enumerate(case_dict["test_case"]):  # 遍历用例文件中所有用例的索引和值
            try:
                if case_data == v:
                    # 修改方法的__doc__在下一次调用时生效,此为展示在报告中的用例描述
                    Test_Network.test_network.__doc__ = case_dict["test_case"][
                        k + 1]["info"]
            except IndexError:
                pass

        if not self.result["result"]:
            # 查看类变量result的值,如果未False,则前一接口校验错误,此接口标记未失败,节约测试时间
            pytest.xfail("前置接口测试失败,此接口标记为失败")
        code, data = request_send.send_request(
            case_data, case_dict["testinfo"].get("host"),
            case_dict["testinfo"].get("address"),
            str(case_dict["testinfo"].get("port")), self.relevance, CASE_PATH,
            self.result)
        expected_code = case_data["check"][0]["expected_code"]
        network_id = data["network"]["id"]
        network_name = data["network"]["name"]
        self.log.debug("data:%s" % data)
        self.Assert.assert_code(code, expected_code)
        # 保存创建的网络id和网络名称
        if case_data["request_type"] == "post":
            self.log.info("保存network_id到全局配置文件")
            conf = Config()
            conf.set_conf("test_data", "network_id", network_id)
            conf.set_conf("test_data", "network_name_for_check", network_name)

        self.log.debug("保存network_name到全局配置文件,用于虚拟校验")
        check_result.check(case_data["test_name"], case_data["check"][0], code,
                           data, self.relevance, CASE_PATH, self.result)