| """ | |
| 共享 Fixtures —— 所有测试模块自动加载,无需显式 import。 | |
| Fixtures 说明 | |
| ------------- | |
| env_zero : MazeEnv | |
| grid_size=6, obstacle_density=0(无随机障碍),seed=0。 | |
| 适合需要确定性地图的单步行为测试。 | |
| env_zero_rewards : MazeEnv | |
| 同上,并显式设置奖励参数(goal=100, wall_hit=-10, step=-1), | |
| 方便断言具体数值。 | |
| env_dense : MazeEnv | |
| grid_size=10, obstacle_density=0.45,用于压力测试连通性。 | |
| cfg_dict : dict | |
| 模拟 from_config() 输入的完整配置字典。 | |
| """ | |
| from __future__ import annotations | |
| from pathlib import Path | |
| import pytest | |
| from maze_env import MazeEnv | |
| def env_zero() -> MazeEnv: | |
| """确定性零障碍环境,grid=6,seed=0。""" | |
| return MazeEnv(grid_size=6, obstacle_density=0.0, seed=0) | |
| def env_zero_rewards() -> MazeEnv: | |
| """确定性零障碍环境,显式奖励参数。""" | |
| return MazeEnv( | |
| grid_size=6, | |
| obstacle_density=0.0, | |
| seed=0, | |
| reward_goal=100.0, | |
| reward_wall_hit=-10.0, | |
| reward_step=-1.0, | |
| ) | |
| def env_dense() -> MazeEnv: | |
| """高密度障碍环境,用于连通性压力测试。""" | |
| return MazeEnv(grid_size=10, obstacle_density=0.45) | |
| def cfg_dict() -> dict: | |
| """完整配置字典,模拟 yaml.safe_load 输出。""" | |
| return { | |
| "maze": { | |
| "grid_size": 12, | |
| "obstacle_density": 0.2, | |
| "max_steps": 300, | |
| "seed": 7, | |
| }, | |
| "rewards": { | |
| "goal": 200, | |
| "wall_hit": -5, | |
| "step": -2, | |
| }, | |
| } | |
| def config_yaml_path() -> Path: | |
| """返回 config.yaml 的绝对路径。""" | |
| return Path(__file__).parent.parent / "config.yaml" | |