Skip to content

Commit f35553e

Browse files
committed
fix: 修复单元测试用例
1 parent ccccf7f commit f35553e

File tree

8 files changed

+38
-20
lines changed

8 files changed

+38
-20
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,7 @@ botpy.log.*
144144
temp/
145145

146146
# idea config
147-
.idea
147+
.idea
148+
149+
# vscode config
150+
.vscode

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,4 +180,4 @@ pytest
180180

181181
欢迎扫码加入**QQ 频道开发者社区**
182182

183-
![开发者社区](https://mpqq.gtimg.cn/privacy/qq_guild_developer.png)
183+
![开发者社区](https://guild-1251316161.cos.ap-guangzhou.myqcloud.com/miniapp/icons/qq_guild_developer_doc.png)

botpy/http.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,21 @@ def _gen_form_data(self) -> multipart.MultipartWriter:
3636
)
3737
else:
3838
part = payload.get_payload(
39-
value,
39+
value,
4040
headers=headers,
41-
encoding=self._charset
41+
encoding=self._charset,
4242
)
4343
except Exception as exc:
4444
print(value)
4545
raise TypeError(
46-
"Can not serialize value type: %r\n " "headers: %r\n value: %r" % (type(value), headers, value)
46+
"Can not serialize value type: %r\n " "headers: %r\n value: %r" % (type(value), headers, value)
4747
) from exc
4848

4949
if dispparams:
5050
part.set_content_disposition(
51-
"form-data",
51+
"form-data",
5252
quote_fields=self._quote_fields,
53-
**dispparams
53+
**dispparams,
5454
)
5555
assert part.headers is not None
5656
part.headers.popall(hdrs.CONTENT_LENGTH, None)
@@ -127,7 +127,7 @@ def __init__(
127127
self.timeout = timeout
128128
self.is_sandbox = is_sandbox
129129

130-
self._token: Optional[Token] = None
130+
self._token: Optional[Token] = None if not app_id else Token(app_id=app_id, secret=secret)
131131
self._session: Optional[aiohttp.ClientSession] = None
132132
self._global_over: Optional[asyncio.Event] = None
133133
self._headers: Optional[dict] = None
@@ -150,7 +150,7 @@ async def check_session(self):
150150

151151
if not self._session or self._session.closed:
152152
self._session = aiohttp.ClientSession(
153-
connector=TCPConnector(limit=500, ssl=SSLContext(), force_close=True)
153+
connector=TCPConnector(limit=500, ssl=SSLContext(), force_close=True),
154154
)
155155

156156
async def request(self, route: Route, retry_time: int = 0, **kwargs: Any):
@@ -204,4 +204,4 @@ async def login(self, token: Token) -> robot.Robot:
204204

205205
data = await self.request(Route("GET", "/users/@me"))
206206
# TODO 检查机器人token错误的raise exception @veehou
207-
return data
207+
return data

botpy/robot.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ async def update_access_token(self):
5959
raise
6060
finally:
6161
await session.close()
62+
if "access_token" not in data or "expires_in" not in data:
63+
_log.error("[botpy] 获取token失败,请检查appid和secret填写是否正确!")
64+
raise RuntimeError(str(data))
6265
_log.info("[botpy] access_token expires_in " + data["expires_in"])
6366
self.access_token = data["access_token"]
6467
self.expires_in = int(data["expires_in"]) + int(time.time())

tests/.test(demo).yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
token:
33
appid: "123"
44
token: "xxxx"
5+
secret: "xxx"
56
test_params:
67
guild_id: "123"
78
guild_owner_id: "123"
@@ -10,7 +11,6 @@ test_params:
1011
guild_test_role_id: "123"
1112
channel_id: "123"
1213
channel_name: "channel"
13-
channel_parent_id: "123"
1414
channel_schedule_id: "123"
1515
robot_name: "veehou's robot"
1616
is_sandbox: False

tests/test_api.py

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
GUILD_TEST_ROLE_ID = test_params_["guild_test_role_id"]
2828
CHANNEL_ID = test_params_["channel_id"]
2929
CHANNEL_NAME = test_params_["channel_name"]
30-
CHANNEL_PARENT_ID = test_params_["channel_parent_id"]
3130
CHANNEL_SCHEDULE_ID = test_params_["channel_schedule_id"]
3231
ROBOT_NAME = test_params_["robot_name"]
3332
IS_SANDBOX = test_params_["is_sandbox"]
@@ -38,7 +37,7 @@ class APITestCase(unittest.TestCase):
3837
def setUp(self) -> None:
3938
print("setUp")
4039
self.loop = asyncio.get_event_loop()
41-
self.http = BotHttp(timeout=5, app_id=test_config["token"]["appid"], token=test_config["token"]["token"])
40+
self.http = BotHttp(timeout=5, app_id=test_config["token"]["appid"], secret=test_config["token"]["secret"])
4241
self.api = botpy.BotAPI(self.http)
4342

4443
def tearDown(self) -> None:
@@ -59,25 +58,37 @@ def test_guild_role_create_update_delete(self):
5958
self.assertEqual("Test Role", result["role"]["name"])
6059
id = result["role"]["id"]
6160

61+
time.sleep(0.5)
6262
coroutine = self.api.update_guild_role(GUILD_ID, role_id=id, name="Test Update Role")
6363
result = self.loop.run_until_complete(coroutine)
6464
self.assertEqual("Test Update Role", result["role"]["name"])
6565

66+
time.sleep(0.5)
6667
result = self.loop.run_until_complete(self.api.delete_guild_role(GUILD_ID, role_id=id))
6768
self.assertEqual(None, result)
6869

6970
def test_guild_role_member_add_delete(self):
71+
coroutine = self.api.create_guild_role(GUILD_ID, name="Test Role Member", color=4278245297)
72+
result: guild.GuildRole = self.loop.run_until_complete(coroutine)
73+
self.assertEqual("Test Role Member", result["role"]["name"])
74+
id = result["role"]["id"]
75+
76+
time.sleep(0.5)
7077
result = self.loop.run_until_complete(
71-
self.api.create_guild_role_member(GUILD_ID, GUILD_TEST_ROLE_ID, GUILD_TEST_MEMBER_ID)
78+
self.api.create_guild_role_member(GUILD_ID, id, GUILD_TEST_MEMBER_ID),
7279
)
7380
self.assertEqual(None, result)
7481

75-
def test_guild_role_member_delete(self):
82+
time.sleep(0.5)
7683
result = self.loop.run_until_complete(
77-
self.api.delete_guild_role_member(GUILD_ID, GUILD_TEST_ROLE_ID, GUILD_TEST_MEMBER_ID)
84+
self.api.delete_guild_role_member(GUILD_ID, id, GUILD_TEST_MEMBER_ID),
7885
)
7986
self.assertEqual(None, result)
8087

88+
time.sleep(0.5)
89+
result = self.loop.run_until_complete(self.api.delete_guild_role(GUILD_ID, role_id=id))
90+
self.assertEqual(None, result)
91+
8192
def test_guild_member(self):
8293
member: user.Member = self.loop.run_until_complete(self.api.get_guild_member(GUILD_ID, GUILD_OWNER_ID))
8394
self.assertEqual(GUILD_OWNER_NAME, member["user"]["username"])
@@ -139,10 +150,10 @@ def test_me(self):
139150

140151
def test_me_guilds(self):
141152
guilds = self.loop.run_until_complete(self.api.me_guilds())
142-
self.assertEqual(1, len(guilds))
153+
self.assertGreaterEqual(len(guilds), 1)
143154

144155
guilds = self.loop.run_until_complete(self.api.me_guilds(GUILD_ID, limit=1, desc=True))
145-
self.assertEqual(0, len(guilds))
156+
self.assertLessEqual(len(guilds), 1)
146157

147158
def test_post_audio(self):
148159
payload = {"audio_url": "test", "text": "test", "status": 0}

tests/test_flags.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def test_multi_intents(self):
1414

1515
def test_default(self):
1616
intents = botpy.Intents.default()
17-
self.assertEqual(1879047679, intents.value)
17+
self.assertEqual(1846285315, intents.value)
1818

1919

2020
if __name__ == "__main__":

tests/test_token.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
class MyTestCase(unittest.TestCase):
1010
def test_something(self):
1111
token = Token("123", "123")
12-
self.assertEqual(token.get_string(), "123.123")
12+
self.assertEqual(token.app_id, "123")
13+
self.assertEqual(token.secret, "123")
1314

1415

1516
if __name__ == "__main__":

0 commit comments

Comments
 (0)