| """ |
| 测试模块 01 —— 空间声明(Spaces) |
| |
| 需求覆盖 |
| -------- |
| * R2:observation_space = Box(0,1,(3,N,N), float32) |
| * R3:action_space = Discrete(4) |
| |
| 对应用例 |
| -------- |
| TC-01, TC-02 |
| """ |
|
|
| from __future__ import annotations |
|
|
| import numpy as np |
| import pytest |
|
|
| from maze_env import MazeEnv |
|
|
|
|
| class TestSpaces: |
| """验证 observation_space 与 action_space 的声明是否符合 Gymnasium 规范。""" |
|
|
| @pytest.mark.unit |
| def test_observation_space_shape(self, env_zero: MazeEnv) -> None: |
| """TC-01a:obs_space.shape 应为 (4, N, N)。 |
| |
| 输入: MazeEnv(grid_size=6, ...) |
| 期望: observation_space.shape == (4, 6, 6) |
| 实测: 直接读取 env.observation_space.shape |
| """ |
| assert env_zero.observation_space.shape == (4, 6, 6) |
|
|
| @pytest.mark.unit |
| def test_observation_space_dtype(self, env_zero: MazeEnv) -> None: |
| """TC-01b:obs_space.dtype 应为 float32。 |
| |
| 输入: MazeEnv(grid_size=6, ...) |
| 期望: observation_space.dtype == np.float32 |
| 实测: 直接读取 env.observation_space.dtype |
| """ |
| assert env_zero.observation_space.dtype == np.float32 |
|
|
| @pytest.mark.unit |
| def test_action_space_size(self, env_zero: MazeEnv) -> None: |
| """TC-02:action_space.n 应为 4(上/下/左/右)。 |
| |
| 输入: MazeEnv(grid_size=6, ...) |
| 期望: action_space.n == 4 |
| 实测: 直接读取 env.action_space.n |
| """ |
| assert env_zero.action_space.n == 4 |
|
|