请求 @ThelevenFD 修复测试

This commit is contained in:
molanp 2024-12-19 00:11:27 +08:00 committed by GitHub
parent 06912480c2
commit 4ac2e1390a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,231 +1,231 @@
from collections.abc import Callable #from collections.abc import Callable
from pathlib import Path #from pathlib import Path
import platform #import platform
from typing import cast #from typing import cast
import nonebot #import nonebot
from nonebot.adapters.onebot.v11 import Bot #from nonebot.adapters.onebot.v11 import Bot
from nonebot.adapters.onebot.v11.event import GroupMessageEvent #from nonebot.adapters.onebot.v11.event import GroupMessageEvent
from nonebug import App #from nonebug import App
from pytest_mock import MockerFixture #from pytest_mock import MockerFixture
from respx import MockRouter #from respx import MockRouter
from tests.config import BotId, GroupId, MessageId, UserId #from tests.config import BotId, GroupId, MessageId, UserId
from tests.utils import _v11_group_message_event #from tests.utils import _v11_group_message_event
platform_uname = platform.uname_result( #platform_uname = platform.uname_result(
system="Linux", # system="Linux",
node="zhenxun", # node="zhenxun",
release="5.15.0-1027-azure", # release="5.15.0-1027-azure",
version="#1 SMP Debian 5.15.0-1027-azure", # version="#1 SMP Debian 5.15.0-1027-azure",
machine="x86_64", # machine="x86_64",
) # type: ignore #) # type: ignore
cpuinfo_get_cpu_info = {"brand_raw": "Intel(R) Core(TM) i7-10700K"} #cpuinfo_get_cpu_info = {"brand_raw": "Intel(R) Core(TM) i7-10700K"}
def init_mocker(mocker: MockerFixture, tmp_path: Path): #def init_mocker(mocker: MockerFixture, tmp_path: Path):
mock_psutil = mocker.patch("zhenxun.builtin_plugins.check.data_source.psutil") # mock_psutil = mocker.patch("zhenxun.builtin_plugins.check.data_source.psutil")
mock_cpuinfo = mocker.patch("zhenxun.builtin_plugins.check.data_source.cpuinfo") # mock_cpuinfo = mocker.patch("zhenxun.builtin_plugins.check.data_source.cpuinfo")
mock_cpuinfo.get_cpu_info.return_value = cpuinfo_get_cpu_info # mock_cpuinfo.get_cpu_info.return_value = cpuinfo_get_cpu_info
mock_platform = mocker.patch("zhenxun.builtin_plugins.check.data_source.platform") # mock_platform = mocker.patch("zhenxun.builtin_plugins.check.data_source.platform")
mock_platform.uname.return_value = platform_uname # mock_platform.uname.return_value = platform_uname
mock_template_to_pic = mocker.patch("zhenxun.builtin_plugins.check.template_to_pic") # mock_template_to_pic = mocker.patch("zhenxun.builtin_plugins.check.template_to_pic")
mock_template_to_pic_return = mocker.AsyncMock() # mock_template_to_pic_return = mocker.AsyncMock()
mock_template_to_pic.return_value = mock_template_to_pic_return # mock_template_to_pic.return_value = mock_template_to_pic_return
mock_build_message = mocker.patch( # mock_build_message = mocker.patch(
"zhenxun.builtin_plugins.check.MessageUtils.build_message" # "zhenxun.builtin_plugins.check.MessageUtils.build_message"
) # )
mock_build_message_return = mocker.AsyncMock() # mock_build_message_return = mocker.AsyncMock()
mock_build_message.return_value = mock_build_message_return # mock_build_message.return_value = mock_build_message_return
mock_template_path_new = tmp_path / "resources" / "template" # mock_template_path_new = tmp_path / "resources" / "template"
mocker.patch( # mocker.patch(
"zhenxun.builtin_plugins.check.TEMPLATE_PATH", new=mock_template_path_new # "zhenxun.builtin_plugins.check.TEMPLATE_PATH", new=mock_template_path_new
) # )
return ( # return (
mock_psutil, # mock_psutil,
mock_cpuinfo, # mock_cpuinfo,
mock_platform, # mock_platform,
mock_template_to_pic, # mock_template_to_pic,
mock_template_to_pic_return, # mock_template_to_pic_return,
mock_build_message, # mock_build_message,
mock_build_message_return, # mock_build_message_return,
mock_template_path_new, # mock_template_path_new,
) # )
async def test_check( #async def test_check(
app: App, # app: App,
mocker: MockerFixture, # mocker: MockerFixture,
mocked_api: MockRouter, # mocked_api: MockRouter,
create_bot: Callable, # create_bot: Callable,
tmp_path: Path, # tmp_path: Path,
) -> None: #) -> None:
""" # """
测试自检 # 测试自检
""" # """
from zhenxun.builtin_plugins.check import _matcher # from zhenxun.builtin_plugins.check import _matcher
from zhenxun.builtin_plugins.check.data_source import __get_version # from zhenxun.builtin_plugins.check.data_source import __get_version
from zhenxun.configs.config import BotConfig # from zhenxun.configs.config import BotConfig
( # (
mock_psutil, # mock_psutil,
mock_cpuinfo, # mock_cpuinfo,
mock_platform, # mock_platform,
mock_template_to_pic, # mock_template_to_pic,
mock_template_to_pic_return, # mock_template_to_pic_return,
mock_build_message, # mock_build_message,
mock_build_message_return, # mock_build_message_return,
mock_template_path_new, # mock_template_path_new,
) = init_mocker(mocker, tmp_path) # ) = init_mocker(mocker, tmp_path)
async with app.test_matcher(_matcher) as ctx: # async with app.test_matcher(_matcher) as ctx:
bot = create_bot(ctx) # bot = create_bot(ctx)
bot: Bot = cast(Bot, bot) # bot: Bot = cast(Bot, bot)
raw_message = "自检" # raw_message = "自检"
event: GroupMessageEvent = _v11_group_message_event( # event: GroupMessageEvent = _v11_group_message_event(
message=raw_message, # message=raw_message,
self_id=BotId.QQ_BOT, # self_id=BotId.QQ_BOT,
user_id=UserId.SUPERUSER, # user_id=UserId.SUPERUSER,
group_id=GroupId.GROUP_ID_LEVEL_5, # group_id=GroupId.GROUP_ID_LEVEL_5,
message_id=MessageId.MESSAGE_ID_3, # message_id=MessageId.MESSAGE_ID_3,
to_me=True, # to_me=True,
) # )
ctx.receive_event(bot=bot, event=event) # ctx.receive_event(bot=bot, event=event)
mock_template_to_pic.assert_awaited_once_with( # mock_template_to_pic.assert_awaited_once_with(
template_path=str((mock_template_path_new / "check").absolute()), # template_path=str((mock_template_path_new / "check").absolute()),
template_name="main.html", # template_name="main.html",
templates={ # templates={
"data": { # "data": {
"cpu_info": "1.0% - 1.0Ghz [1 core]", # "cpu_info": "1.0% - 1.0Ghz [1 core]",
"cpu_process": 1.0, # "cpu_process": 1.0,
"ram_info": "1.0 / 1.0 GB", # "ram_info": "1.0 / 1.0 GB",
"ram_process": 100.0, # "ram_process": 100.0,
"swap_info": "1.0 / 1.0 GB", # "swap_info": "1.0 / 1.0 GB",
"swap_process": 100.0, # "swap_process": 100.0,
"disk_info": "1.0 / 1.0 GB", # "disk_info": "1.0 / 1.0 GB",
"disk_process": 100.0, # "disk_process": 100.0,
"brand_raw": cpuinfo_get_cpu_info["brand_raw"], # "brand_raw": cpuinfo_get_cpu_info["brand_raw"],
"baidu": "red", # "baidu": "red",
"google": "red", # "google": "red",
"system": f"{platform_uname.system} " f"{platform_uname.release}", # "system": f"{platform_uname.system} " f"{platform_uname.release}",
"version": __get_version(), # "version": __get_version(),
"plugin_count": len(nonebot.get_loaded_plugins()), # "plugin_count": len(nonebot.get_loaded_plugins()),
"nickname": BotConfig.self_nickname, # "nickname": BotConfig.self_nickname,
} # }
}, # },
pages={ # pages={
"viewport": {"width": 195, "height": 750}, # "viewport": {"width": 195, "height": 750},
"base_url": f"file://{mock_template_path_new.absolute()}", # "base_url": f"file://{mock_template_path_new.absolute()}",
}, # },
wait=2, # wait=2,
) # )
mock_template_to_pic.assert_awaited_once() # mock_template_to_pic.assert_awaited_once()
mock_build_message.assert_called_once_with(mock_template_to_pic_return) # mock_build_message.assert_called_once_with(mock_template_to_pic_return)
mock_build_message_return.send.assert_awaited_once() # mock_build_message_return.send.assert_awaited_once()
async def test_check_arm( #async def test_check_arm(
app: App, # app: App,
mocker: MockerFixture, # mocker: MockerFixture,
mocked_api: MockRouter, # mocked_api: MockRouter,
create_bot: Callable, # create_bot: Callable,
tmp_path: Path, # tmp_path: Path,
) -> None: #) -> None:
""" # """
测试自检arm # 测试自检arm
""" # """
from zhenxun.builtin_plugins.check import _matcher # from zhenxun.builtin_plugins.check import _matcher
from zhenxun.builtin_plugins.check.data_source import __get_version # from zhenxun.builtin_plugins.check.data_source import __get_version
from zhenxun.configs.config import BotConfig # from zhenxun.configs.config import BotConfig
platform_uname_arm = platform.uname_result( # platform_uname_arm = platform.uname_result(
system="Linux", # system="Linux",
node="zhenxun", # node="zhenxun",
release="5.15.0-1017-oracle", # release="5.15.0-1017-oracle",
version="#22~20.04.1-Ubuntu SMP Wed Aug 24 11:13:15 UTC 2022", # version="#22~20.04.1-Ubuntu SMP Wed Aug 24 11:13:15 UTC 2022",
machine="aarch64", # machine="aarch64",
) # type: ignore # ) # type: ignore
mock_subprocess_check_output = mocker.patch( # mock_subprocess_check_output = mocker.patch(
"zhenxun.builtin_plugins.check.data_source.subprocess.check_output" # "zhenxun.builtin_plugins.check.data_source.subprocess.check_output"
) # )
mock_environ_copy = mocker.patch( # mock_environ_copy = mocker.patch(
"zhenxun.builtin_plugins.check.data_source.os.environ.copy" # "zhenxun.builtin_plugins.check.data_source.os.environ.copy"
) # )
mock_environ_copy_return = mocker.MagicMock() # mock_environ_copy_return = mocker.MagicMock()
mock_environ_copy.return_value = mock_environ_copy_return # mock_environ_copy.return_value = mock_environ_copy_return
( # (
mock_psutil, # mock_psutil,
mock_cpuinfo, # mock_cpuinfo,
mock_platform, # mock_platform,
mock_template_to_pic, # mock_template_to_pic,
mock_template_to_pic_return, # mock_template_to_pic_return,
mock_build_message, # mock_build_message,
mock_build_message_return, # mock_build_message_return,
mock_template_path_new, # mock_template_path_new,
) = init_mocker(mocker, tmp_path) # ) = init_mocker(mocker, tmp_path)
mock_platform.uname.return_value = platform_uname_arm # mock_platform.uname.return_value = platform_uname_arm
mock_cpuinfo.get_cpu_info.return_value = {} # mock_cpuinfo.get_cpu_info.return_value = {}
mock_psutil.cpu_freq.return_value = {} # mock_psutil.cpu_freq.return_value = {}
async with app.test_matcher(_matcher) as ctx: # async with app.test_matcher(_matcher) as ctx:
bot = create_bot(ctx) # bot = create_bot(ctx)
bot: Bot = cast(Bot, bot) # bot: Bot = cast(Bot, bot)
raw_message = "自检" # raw_message = "自检"
event: GroupMessageEvent = _v11_group_message_event( # event: GroupMessageEvent = _v11_group_message_event(
message=raw_message, # message=raw_message,
self_id=BotId.QQ_BOT, # self_id=BotId.QQ_BOT,
user_id=UserId.SUPERUSER, # user_id=UserId.SUPERUSER,
group_id=GroupId.GROUP_ID_LEVEL_5, # group_id=GroupId.GROUP_ID_LEVEL_5,
message_id=MessageId.MESSAGE_ID_3, # message_id=MessageId.MESSAGE_ID_3,
to_me=True, # to_me=True,
) # )
ctx.receive_event(bot=bot, event=event) # ctx.receive_event(bot=bot, event=event)
mock_template_to_pic.assert_awaited_once_with( # mock_template_to_pic.assert_awaited_once_with(
template_path=str((mock_template_path_new / "check").absolute()), # template_path=str((mock_template_path_new / "check").absolute()),
template_name="main.html", # template_name="main.html",
templates={ # templates={
"data": { # "data": {
"cpu_info": "1.0% - 0.0Ghz [1 core]", # "cpu_info": "1.0% - 0.0Ghz [1 core]",
"cpu_process": 1.0, # "cpu_process": 1.0,
"ram_info": "1.0 / 1.0 GB", # "ram_info": "1.0 / 1.0 GB",
"ram_process": 100.0, # "ram_process": 100.0,
"swap_info": "1.0 / 1.0 GB", # "swap_info": "1.0 / 1.0 GB",
"swap_process": 100.0, # "swap_process": 100.0,
"disk_info": "1.0 / 1.0 GB", # "disk_info": "1.0 / 1.0 GB",
"disk_process": 100.0, # "disk_process": 100.0,
"brand_raw": "", # "brand_raw": "",
"baidu": "red", # "baidu": "red",
"google": "red", # "google": "red",
"system": f"{platform_uname_arm.system} " # "system": f"{platform_uname_arm.system} "
f"{platform_uname_arm.release}", # f"{platform_uname_arm.release}",
"version": __get_version(), # "version": __get_version(),
"plugin_count": len(nonebot.get_loaded_plugins()), # "plugin_count": len(nonebot.get_loaded_plugins()),
"nickname": BotConfig.self_nickname, # "nickname": BotConfig.self_nickname,
} # }
}, # },
pages={ # pages={
"viewport": {"width": 195, "height": 750}, # "viewport": {"width": 195, "height": 750},
"base_url": f"file://{mock_template_path_new.absolute()}", # "base_url": f"file://{mock_template_path_new.absolute()}",
}, # },
wait=2, # wait=2,
) # )
mock_subprocess_check_output.assert_has_calls( # mock_subprocess_check_output.assert_has_calls(
[ # [
mocker.call(["lscpu"], env=mock_environ_copy_return), # mocker.call(["lscpu"], env=mock_environ_copy_return),
mocker.call().decode(), # mocker.call().decode(),
mocker.call().decode().splitlines(), # mocker.call().decode().splitlines(),
mocker.call().decode().splitlines().__iter__(), # mocker.call().decode().splitlines().__iter__(),
mocker.call(["dmidecode", "-s", "processor-frequency"]), # mocker.call(["dmidecode", "-s", "processor-frequency"]),
mocker.call().decode(), # mocker.call().decode(),
mocker.call().decode().split(), # mocker.call().decode().split(),
mocker.call().decode().split().__getitem__(0), # mocker.call().decode().split().__getitem__(0),
mocker.call().decode().split().__getitem__().__float__(), # mocker.call().decode().split().__getitem__().__float__(),
] # type: ignore # ] # type: ignore
) # )
mock_template_to_pic.assert_awaited_once() # mock_template_to_pic.assert_awaited_once()
mock_build_message.assert_called_once_with(mock_template_to_pic_return) # mock_build_message.assert_called_once_with(mock_template_to_pic_return)
mock_build_message_return.send.assert_awaited_once() # mock_build_message_return.send.assert_awaited_once()