您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
64 行
1.7 KiB
64 行
1.7 KiB
from unittest import mock
|
|
import pytest
|
|
from mlagents_envs.env_utils import validate_environment_path, launch_executable
|
|
from mlagents_envs.exception import UnityEnvironmentException
|
|
from mlagents_envs.logging_util import (
|
|
set_log_level,
|
|
get_logger,
|
|
INFO,
|
|
ERROR,
|
|
FATAL,
|
|
CRITICAL,
|
|
DEBUG,
|
|
)
|
|
|
|
|
|
def mock_glob_method(path):
|
|
"""
|
|
Given a path input, returns a list of candidates
|
|
"""
|
|
if ".x86" in path:
|
|
return ["linux"]
|
|
if ".app" in path:
|
|
return ["darwin"]
|
|
if ".exe" in path:
|
|
return ["win32"]
|
|
if "*" in path:
|
|
return "Any"
|
|
return []
|
|
|
|
|
|
@mock.patch("sys.platform")
|
|
@mock.patch("glob.glob")
|
|
def test_validate_path_empty(glob_mock, platform_mock):
|
|
glob_mock.return_value = None
|
|
path = validate_environment_path(" ")
|
|
assert path is None
|
|
|
|
|
|
@mock.patch("mlagents_envs.env_utils.get_platform")
|
|
@mock.patch("glob.glob")
|
|
def test_validate_path(glob_mock, platform_mock):
|
|
glob_mock.side_effect = mock_glob_method
|
|
for platform in ["linux", "darwin", "win32"]:
|
|
platform_mock.return_value = platform
|
|
path = validate_environment_path(" ")
|
|
assert path == platform
|
|
|
|
|
|
@mock.patch("glob.glob")
|
|
@mock.patch("subprocess.Popen")
|
|
def test_launch_executable(mock_popen, glob_mock):
|
|
with pytest.raises(UnityEnvironmentException):
|
|
launch_executable(" ", [])
|
|
glob_mock.return_value = ["FakeLaunchPath"]
|
|
launch_executable(" ", [])
|
|
mock_popen.side_effect = PermissionError("Fake permission error")
|
|
with pytest.raises(UnityEnvironmentException):
|
|
launch_executable(" ", [])
|
|
|
|
|
|
def test_set_logging_level():
|
|
for level in [INFO, ERROR, FATAL, CRITICAL, DEBUG]:
|
|
set_log_level(level)
|
|
assert get_logger("test").level == level
|