class Assertions: """通用断言类,支持JsonPath、状态码、字段存在性等""" @staticmethod def assert_status_code(response, expected_code): """断言HTTP状态码""" assert response.status_code == expected_code, \ f"状态码错误: 预期{expected_code}, 实际{response.status_code}" @staticmethod def assert_json_value_by_key(response, key, expected_value, key_path=None): """ 断言JSON中某个key的值 :param key_path: 支持点号分隔的嵌套路径,如 "data.user.id" """ data = response.json() if key_path: # 简单实现嵌套取值:data["data"]["user"]["id"] parts = key_path.split(".") value = data for part in parts: value = value.get(part, {}) actual_value = value.get(key) else: actual_value = data.get(key) assert actual_value == expected_value, \ f"字段 {key_path}.{key if key_path else key} 预期{expected_value},实际{actual_value}" @staticmethod def assert_schema(response, expected_schema): """使用jsonschema库校验响应结构(需安装jsonschema)""" from jsonschema import validate validate(instance=response.json(), schema=expected_schema)# 使用示例def test_login(): response = requests.post("https://api.example.com/login", json={"user": "admin", "pwd": "123"}) Assertions.assert_status_code(response, 200) Assertions.assert_json_value_by_key(response, "token", exists=True) # 可扩展存在性断言