| 结果 | 用例 | 耗时 |
|---|---|---|
| failed |
test_friend_apply_and_accept
tests/api/test_friend.py::test_friend_apply_and_accept
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_friend_apply_rejects_self
tests/api/test_friend.py::test_friend_apply_rejects_self
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.07s |
| failed |
test_friend_apply_requires_vercode
tests/api/test_friend.py::test_friend_apply_requires_vercode
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_create_list_members_and_disband
tests/api/test_group.py::test_create_list_members_and_disband
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_group_create_requires_members
tests/api/test_group.py::test_group_create_requires_members
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_conversation_detail_requires_channel
tests/api/test_im_chat.py::test_conversation_detail_requires_channel
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_conversation_list
tests/api/test_im_chat.py::test_conversation_list
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_group_chat_send_and_history
tests/api/test_im_chat.py::test_group_chat_send_and_history
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_private_chat_send_and_history
tests/api/test_im_chat.py::test_private_chat_send_and_history
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_typing_requires_channel
tests/api/test_im_chat.py::test_typing_requires_channel
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_login_success_returns_token
tests/api/test_login.py::test_login_success_returns_token
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_login_then_user_info
tests/api/test_login.py::test_login_then_user_info
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_duplicate_register_rejected
tests/api/test_register.py::test_duplicate_register_rejected
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_register_check_and_challenge_then_register
tests/api/test_register.py::test_register_check_and_challenge_then_register
tests/api/test_register.py:44: in test_register_check_and_challenge_then_register
assert check.code == SUCCESS
E AssertionError: assert 10097 == 200
E + where 10097 = ApiResponse(http_status=200, code=10097, msg='查询用户信息失败', data=None, elapsed_ms=1.2780070028384216, raw={'code': 10097,...': '***'}, http_status=200, response_body={'code': '***', 'msg': '查询用户信息失败', 'data': None}, elapsed_ms=1.28, error='')).code
HTTP 1 次
POST
/api/v1/user/register/check
HTTP 200
1.28 ms
请求{
"account": "tb4bf7ecb9",
"auth_code": "***",
"code": "***",
"type": 2
}
响应{
"code": "***",
"data": null,
"msg": "\u67e5\u8be2\u7528\u6237\u4fe1\u606f\u5931\u8d25"
}
|
0.00s |
| failed |
test_register_rejects_short_password
tests/api/test_register.py::test_register_rejects_short_password
tests/api/test_register.py:35: in test_register_rejects_short_password
assert resp.code == PARAM_ERROR
E AssertionError: assert 10301 == 10001
E + where 10301 = ApiResponse(http_status=200, code=10301, msg='人机验证失败', data=None, elapsed_ms=2.874839003197849, raw={'code': 10301, 'm...er': 'ok'}}, http_status=200, response_body={'code': '***', 'msg': '人机验证失败', 'data': None}, elapsed_ms=2.87, error='')).code
HTTP 2 次
POST
/api/v1/user/registration-challenge
HTTP 200
2.94 ms
请求{
"account": "tb5f7024a7",
"device_id": "testbot-device-001",
"operation_id": "506a5fa6-7f6a-4adc-8018-c95b2f3599c3"
}
响应{
"code": "***",
"data": {
"challenge_id": "6b10d86c-a25a-42cc-a0b0-d6bdddfc4c06",
"expires_at": "2026-09-14T11:21:39Z",
"image_base64": "iVBORw0KGgoAAAANSUhEUgAAAEgAAAAYCAIAAADWASznAAAAgElEQVR4nOyXSw6AIAxEreH+Vx4XsnDThKr4ee2sCqGkE3g0NEkLUevbBcxSGfub2nFgZnsgyYufXO/ljhjDnhjWmFGfe5exkeQRlu7apxjrwhrLx1i0L0Xnq4+dFNZYDsY8zWAsWmgx1oU1loOxr/3HrvQ97FXEGsMytgUAAP//4AyQJoCtDs0AAAAASUVORK5CYII=",
"kind": "IMAGE",
"mime_type": "image/png"
},
"msg": "\u6210\u529f"
}
POST
/api/v1/user/username/register
HTTP 200
2.87 ms
请求{
"account": "tb5f7024a7",
"confirmation": "***",
"device": {
"channel": "testbot",
"device_id": "testbot-device-001",
"device_model": "pytest",
"device_name": "SuperIM-TestBot",
"mobile_device_type": 1
},
"flag": 0,
"gender": 1,
"human_verification": {
"answer": "ok",
"challenge_id": "6b10d86c-a25a-42cc-a0b0-d6bdddfc4c06"
},
"nickname": "Bot5f70",
"operation_id": "f1cb754c-6c3a-4121-81c9-18d621189338",
"password": "***",
"profile": {
"display_name": "Bot5f70",
"gender": 1
},
"username": "tb5f7024a7"
}
响应{
"code": "***",
"data": null,
"msg": "\u4eba\u673a\u9a8c\u8bc1\u5931\u8d25"
}
|
0.01s |
| failed |
test_search_by_username
tests/api/test_user.py::test_search_by_username
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| failed |
test_search_self_by_uid
tests/api/test_user.py::test_search_self_by_uid
tests/conftest.py:54: in primary
return login_account(api_client.clone(), settings.primary)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/testbot/session.py:36: in login_account
raise AssertionError(f"登录失败 {account.username}: code={resp.code} msg={resp.msg}")
E AssertionError: 登录失败 testbota: code=206 msg=账号或密码错误,请重试
|
0.00s |
| passed |
test_group_list_without_auth_fails
tests/api/test_group.py::test_group_list_without_auth_fails
HTTP 1 次
GET
/api/v1/group/list
HTTP 200
1.93 ms
请求null 响应{
"code": "***",
"msg": "token\u5931\u6548,\u8bf7\u91cd\u65b0\u767b\u5f55\uff01"
}
|
0.01s |
| passed |
test_common_config
tests/api/test_health.py::test_common_config
HTTP 1 次
GET
/api/v1/common/config
HTTP 200
1.42 ms
请求null 响应{
"code": "***",
"data": null,
"msg": "\u6210\u529f"
}
|
0.00s |
| passed |
test_health_live
tests/api/test_health.py::test_health_live
HTTP 1 次
GET
/health/live
HTTP 200
1.59 ms
请求null 响应{
"status": "alive"
}
|
0.00s |
| passed |
test_health_ready
tests/api/test_health.py::test_health_ready
HTTP 1 次
GET
/health/ready
HTTP 200
1.01 ms
请求null 响应{
"checks": {
"mysql": "up",
"redis": "up"
},
"status": "ready"
}
|
0.00s |
| passed |
test_login_empty_username
tests/api/test_login.py::test_login_empty_username
HTTP 1 次
POST
/api/v1/user/login
HTTP 200
1.3 ms
请求{
"device": {
"channel": "testbot",
"device_id": "testbot-device-001",
"device_model": "pytest",
"device_name": "SuperIM-TestBot",
"mobile_device_type": 1
},
"flag": 0,
"operation_id": "e2a8b466-da61-4866-b34e-d7870e89f7ec",
"password": "***",
"username": ""
}
响应{
"code": "***",
"data": null,
"msg": "\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a\uff01"
}
|
0.00s |
| passed |
test_login_wrong_password
tests/api/test_login.py::test_login_wrong_password
HTTP 1 次
POST
/api/v1/user/login
HTTP 200
3.68 ms
请求{
"device": {
"channel": "testbot",
"device_id": "testbot-device-001",
"device_model": "pytest",
"device_name": "SuperIM-TestBot",
"mobile_device_type": 1
},
"flag": 0,
"operation_id": "cb561311-e0f2-4eee-80fa-8cc56194c813",
"password": "***",
"username": "testbota"
}
响应{
"code": "***",
"data": null,
"msg": "\u8d26\u53f7\u6216\u5bc6\u7801\u9519\u8bef\uff0c\u8bf7\u91cd\u8bd5"
}
|
0.00s |
| passed |
test_protected_endpoint_requires_token
tests/api/test_login.py::test_protected_endpoint_requires_token
HTTP 1 次
GET
/api/v1/user/info
HTTP 200
1.42 ms
请求null 响应{
"code": "***",
"msg": "token\u5931\u6548,\u8bf7\u91cd\u65b0\u767b\u5f55\uff01"
}
|
0.01s |
| passed |
test_register_check_rejects_short_username
tests/api/test_register.py::test_register_check_rejects_short_username
HTTP 1 次
POST
/api/v1/user/register/check
HTTP 200
0.97 ms
请求{
"account": "ab",
"auth_code": "***",
"code": "***",
"type": 2
}
响应{
"code": "***",
"data": null,
"msg": "\u8d26\u53f7\u5fc5\u987b\u662f\u957f\u5ea64-15\u4f4d\u5b57\u6bcd\u6570\u5b57\u7ec4\u5408"
}
|
0.00s |
| passed |
test_register_rejects_empty_username
tests/api/test_register.py::test_register_rejects_empty_username
HTTP 1 次
POST
/api/v1/user/username/register
HTTP 200
0.99 ms
请求{
"account": "",
"confirmation": "***",
"device": {
"channel": "testbot",
"device_id": "testbot-device-001",
"device_model": "pytest",
"device_name": "SuperIM-TestBot",
"mobile_device_type": 1
},
"flag": 0,
"gender": 1,
"human_verification": {
"answer": "ok",
"challenge_id": "x"
},
"nickname": "Nick",
"operation_id": "f200013b-26c8-47da-bd55-89371000e5f5",
"password": "***",
"profile": {
"display_name": "Nick",
"gender": 1
},
"username": ""
}
响应{
"code": "***",
"data": null,
"msg": "\u53c2\u6570\u9519\u8bef"
}
|
0.00s |