| 结果 | 用例 | 耗时 |
|---|---|---|
| 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.2215869937790558, raw={'code': 10097,...': '***'}, http_status=200, response_body={'code': '***', 'msg': '查询用户信息失败', 'data': None}, elapsed_ms=1.22, error='')).code
HTTP 1 次
POST
/api/v1/user/register/check
HTTP 200
1.22 ms
请求{
"account": "tbb2197bd2",
"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=3.4775859967339784, raw={'code': 10301, '...er': 'ok'}}, http_status=200, response_body={'code': '***', 'msg': '人机验证失败', 'data': None}, elapsed_ms=3.48, error='')).code
HTTP 2 次
POST
/api/v1/user/registration-challenge
HTTP 200
4.01 ms
请求{
"account": "tb9e6ddb81",
"device_id": "testbot-device-001",
"operation_id": "04e3b420-d29c-48ae-936b-4a0ed422c6ce"
}
响应{
"code": "***",
"data": {
"challenge_id": "372f0653-cf9e-4611-8401-f6b251f8be7e",
"expires_at": "2026-09-14T11:22:20Z",
"image_base64": "iVBORw0KGgoAAAANSUhEUgAAAEgAAAAYCAIAAADWASznAAAAeElEQVR4nOyVwQqAMAxDrez/f7mCXopY2KFu+pZ3qqXIwpqluftGZJ99gLeQsL/R4oeZXcXNeD39rB45H8HeGFaYUZ/7Mo/19DOq/hPBriJW2Hoe+0IuKccewApbw2MZVbk0ch67ilhh8tiJcmw+WGFYjx0BAAD//0zHkyaX2QsZAAAAAElFTkSuQmCC",
"kind": "IMAGE",
"mime_type": "image/png"
},
"msg": "\u6210\u529f"
}
POST
/api/v1/user/username/register
HTTP 200
3.48 ms
请求{
"account": "tb9e6ddb81",
"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": "372f0653-cf9e-4611-8401-f6b251f8be7e"
},
"nickname": "Bot9e6d",
"operation_id": "c5726180-8f49-4357-921d-c748dba50370",
"password": "***",
"profile": {
"display_name": "Bot9e6d",
"gender": 1
},
"username": "tb9e6ddb81"
}
响应{
"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.78 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.35 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
0.96 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.29 ms
请求{
"device": {
"channel": "testbot",
"device_id": "testbot-device-001",
"device_model": "pytest",
"device_name": "SuperIM-TestBot",
"mobile_device_type": 1
},
"flag": 0,
"operation_id": "6e6b2d7f-44e2-4b92-a91b-ca8beb72fe06",
"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.78 ms
请求{
"device": {
"channel": "testbot",
"device_id": "testbot-device-001",
"device_model": "pytest",
"device_name": "SuperIM-TestBot",
"mobile_device_type": 1
},
"flag": 0,
"operation_id": "b85e33be-bc74-471f-b6fc-419f07a0ddef",
"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.46 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.98 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
1.06 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": "2dfa3879-2e5f-4863-b339-669ffc03093c",
"password": "***",
"profile": {
"display_name": "Nick",
"gender": 1
},
"username": ""
}
响应{
"code": "***",
"data": null,
"msg": "\u53c2\u6570\u9519\u8bef"
}
|
0.00s |