| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- """SchemaValidator 工具层的单元测试"""
- from src.tools.schema_validator import SchemaValidator
- def _validator():
- return SchemaValidator()
- def _result(success=True, status_code=200, body=None, error=None):
- return {
- "success": success,
- "status_code": status_code,
- "body": body,
- "elapsed": 0.1,
- "error": error,
- }
- # --- 状态码校验 ---
- def test_status_code_match():
- ok, msg = _validator().validate_status_code(200, 200)
- assert ok is True and msg is None
- def test_status_code_mismatch():
- ok, msg = _validator().validate_status_code(200, 400)
- assert ok is False and "400" in msg
- # --- 响应体结构校验 ---
- def test_body_no_schema_skips():
- ok, msg = _validator().validate_body({"a": 1}, None)
- assert ok is True
- def test_body_matches_schema():
- schema = {"type": "object", "properties": {"id": {"type": "integer"}}, "required": ["id"]}
- ok, msg = _validator().validate_body({"id": 1}, schema)
- assert ok is True
- def test_body_mismatches_schema():
- schema = {"type": "object", "properties": {"id": {"type": "integer"}}, "required": ["id"]}
- ok, msg = _validator().validate_body({"name": "x"}, schema)
- assert ok is False and "id" in msg
- # --- 综合校验 ---
- def test_validate_request_failed():
- check = _validator().validate(_result(success=False, error="请求超时"), expected_status=200)
- assert check["success"] is False
- assert any("请求超时" in e for e in check["errors"])
- def test_validate_all_pass():
- check = _validator().validate(_result(status_code=200, body={"id": 1}), expected_status=200)
- assert check["success"] is True and check["errors"] == []
- def test_validate_status_and_schema_both_fail():
- schema = {"type": "object", "required": ["id"]}
- check = _validator().validate(
- _result(status_code=500, body={}), expected_status=200, expected_schema=schema
- )
- assert check["success"] is False and len(check["errors"]) == 2
|