interview / tests /test_01_spaces.py
Lee93whut
feat(env): Gymnasium maze env, 3-channel obs, BFS reachability
fe0625d
"""
测试模块 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