运行Python测试技能Skill run-python-tests

该技能用于在代码更改后自动化运行Python测试,以验证代码正确性。支持全量测试、文件级测试、特定测试等多种运行模式,提供超时控制和详细结果报告,便于快速迭代和全面验证。关键词:Python测试、自动化测试、代码验证、测试执行、持续集成。

测试 0 次安装 0 次浏览 更新于 3/11/2026

name: run-python-tests description: 在更改代码后运行端到端Python测试以验证正确性

运行Python测试技能

在更改代码后运行端到端Python测试以验证正确性。

参数

  • 无参数:运行所有Python测试
  • <文件名>:运行指定文件中的所有Python测试
  • <文件名>:<测试名>:运行指定文件中的特定Python测试
  • <文件1> <文件2>:运行指定文件中的所有Python测试

提供的参数:$ARGUMENTS

说明

测试超时

有些测试需要较长时间运行。TEST_TIMEOUT参数控制每个测试在被终止前允许运行的时间。

  • 快速验证(首选):传递TEST_TIMEOUT=20以获得快速反馈。超过此超时的测试将被终止。
  • 完整测试运行:省略TEST_TIMEOUT以让测试使用默认超时(300秒)运行。

始终从快速验证开始,使用TEST_TIMEOUT=20。更快的反馈循环导致更快的迭代。

如果在快速验证运行期间有超时,检查超时测试是否与当前任务相关:

  • 如果可以自主确定相关性(例如,测试名称清楚地与您更改的代码相关),则重新运行这些特定测试而不设置超时。
  • 如果无法确定相关性,询问用户是否应重新运行超时测试而不设置超时。

所有测试

./build.sh RUN_PYTEST ENABLE_ASSERT=1 TEST_TIMEOUT=20

来自特定文件的所有测试

source .venv/bin/activate && ./build.sh RUN_PYTEST ENABLE_ASSERT=1 TEST_TIMEOUT=20 TEST="<文件名不含扩展名>"

例如:

source .venv/bin/activate && ./build.sh RUN_PYTEST ENABLE_ASSERT=1 TEST_TIMEOUT=20 TEST="test_crash"

用于运行tests/pytests/test_crash.py中的测试。

来自多个文件的所有测试

source .venv/bin/activate && ./build.sh RUN_PYTEST ENABLE_ASSERT=1 TEST_TIMEOUT=20 TEST="<文件1> <文件2>"

例如:

source .venv/bin/activate && ./build.sh RUN_PYTEST ENABLE_ASSERT=1 TEST_TIMEOUT=20 TEST="test_crash test_gc"

用于运行tests/pytests/test_crash.pytests/pytests/test_gc.py中的测试。

来自特定文件的特定测试

source .venv/bin/activate && ./build.sh RUN_PYTEST ENABLE_ASSERT=1 TEST_TIMEOUT=20 TEST="<文件名不含扩展名>:<测试名>"

例如:

source .venv/bin/activate && ./build.sh RUN_PYTEST ENABLE_ASSERT=1 TEST_TIMEOUT=20 TEST="test_crash:test_query_thread_crash"

用于运行tests/pytests/test_crash.py中的test_query_thread_crash测试。

解释测试输出

对于每个失败的测试,您将看到一个错误消息,详细说明失败原因,从Python测试运行器的视角显示。 每个失败的测试还将有一个相关的日志文件,位于tests/pytests/logs下。日志文件的名称在每次测试运行时会更改,但它包含在测试运行器的输出中。

报告

运行测试后,整理一份报告:

  • 通过的测试数量
  • 失败的测试数量
  • 跳过的测试数量
  • 对于每个失败的测试:
    • 测试输出中报告的Python端错误消息
    • Redis服务器日志中的堆栈跟踪:
      • 如果恐慌在Rust代码中,包括Rust恐慌消息和Rust回溯(来自# search_rust_backtrace部分)
      • 如果崩溃在C代码中,仅包括C回溯。
    • 日志文件的路径,相对于仓库根目录