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)
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)
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)
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)
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)