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.py和tests/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回溯。
- 如果恐慌在Rust代码中,包括Rust恐慌消息和Rust回溯(来自
- 日志文件的路径,相对于仓库根目录