-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_class.py
110 lines (95 loc) · 5.1 KB
/
test_class.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# -*- coding: utf-8 -*-
import time
import main
msg_list = [
{"syncId": "", "data": {"code": 0, "session": "SESSION"}},
{"syncId": "-1",
"data": {"type": "GroupMessage", "messageChain": [{"type": "Source", "id": 1, "time": int(time.time())}],
"sender": {"id": 10001, "memberName": "Alice", "specialTitle": "",
"permission": "MEMBER", "joinTimestamp": 0, "lastSpeakTimestamp": int(time.time()),
"muteTimeRemaining": 0,
"group": {"id": 114514, "name": "机器人测试群",
"permission": "MEMBER"}}}}, # 普通群成员说话
{"syncId": "-1",
"data": {"type": "GroupRecallEvent", "authorId": 10001, "messageId": 1, "time": int(time.time()),
"group": {"id": 114514, "name": "机器人测试群", "permission": "MEMBER"},
"operator": {"id": 10001, "memberName": "Alice", "specialTitle": "",
"permission": "ADMINISTRATOR", "joinTimestamp": 0,
"lastSpeakTimestamp": int(time.time()), "muteTimeRemaining": 0,
"group": {"id": 114514, "name": "机器人测试群", "permission": "MEMBER"}}}}, # 消息撤回
{"syncId": "-1", "data": {"type": "NudgeEvent", "fromId": 10001, "target": 10002,
"subject": {"kind": "Group", "id": 114514, "name": "机器人测试群",
"permission": "OWNER"}, "action": "戳了戳", "suffix": ""}}, # 群内戳一戳
{"syncId": "-1", "data": {"type": "NudgeEvent", "fromId": 10001, "target": 10002,
"subject": {"kind": "Friend", "id": 3484861532, "nickname": "Alice", "remark": "爱丽丝"},
"action": "戳了戳", "suffix": ""}} # 私聊戳一戳
]
class TestClassMiraiResponse:
def test_sync_id(self):
for msg in msg_list:
mirai_res = main.MiraiResponse(msg)
assert mirai_res.sync_id == msg['syncId']
def test_message_chain_get(self):
for msg in msg_list:
mirai_res = main.MiraiResponse(msg)
if msg['data'].get('messageChain', None): # 判断是否带有messageChain
assert mirai_res.get_message_chain() == msg['data']['messageChain']
else:
assert mirai_res.get_message_chain() == []
def test_message_type_get(self):
for msg in msg_list:
mirai_res = main.MiraiResponse(msg)
# 是否拥有type字段
if 'type' not in msg['data']:
assert mirai_res.get_message_type() is None
else:
assert mirai_res.get_message_type() == msg['data']['type']
def test_sender_id_get(self):
for msg in msg_list:
mirai_res = main.MiraiResponse(msg)
# 获取消息类型
if 'type' not in msg['data']:
assert mirai_res.get_sender_id() is None
else:
message_type = msg['data']['type']
if message_type in ['GroupMessage', 'FriendMessage']: # 最常见的类型
assert mirai_res.get_sender_id() == msg['data']['sender']['id']
elif message_type == 'GroupRecallEvent': # 群聊撤回事件
assert mirai_res.get_sender_id() == msg['data']['operator']['id']
elif message_type == 'NudgeEvent': # 戳一戳事件
assert mirai_res.get_sender_id() == msg['data']['fromId']
# def test_group_id_get(self):
# for msg in msg_list:
# mirai_res = main.MiraiResponse(msg)
#
# if 'type' not in msg['data']:
# assert mirai_res.get_group_id() is None
#
# # 不符合条件,跳过测试
# continue
# else:
# message_type = msg['data']['type']
#
# if message_type in ['GroupMessage', 'GroupRecallEvent']:
# assert mirai_res.get_group_id() == msg['data']['group']['id']
# elif message_type == 'NudgeEvent':
# assert mirai_res.get_group_id() == msg['data']['subject']['id']
# else:
# assert mirai_res.get_group_id() is None
def test_sender_name_get(self):
for msg in msg_list:
mirai_res = main.MiraiResponse(msg)
if 'type' not in msg['data']:
assert mirai_res.get_sender_name() == (None, None)
# 不符合条件,跳过测试
continue
else:
message_type = msg['data']['type']
if message_type == 'GroupMessage':
assert msg['data']['sender']['memberName'], msg['data']['sender']['specialTitle']
elif message_type == 'FriendMessage':
assert msg['data']['sender']['nickname'], msg['data']['sender']['remark']
elif message_type == 'GroupRecallEvent':
assert msg['data']['operator']['memberName'], msg['data']['operator']['specialTitle']
else:
assert mirai_res.get_sender_name() == (None, None)