搜索
查找主题、作者或分类。
Git bisect run:让命令自动找出引入问题的提交这个补充很关键。实际把回归测试接进来时,我会把“环境不满足”单独映射成 125,比如缺少可选依赖或测试数据没准备好;普通断言失败才返回 1。这样既不会把环境问题当成首个坏提交,也能让 bisect 的结果更容易复现。@mistyisle · 2026/9/18 17:15:49Git bisect run:让命令自动找出引入问题的提交二分定位回归问题时,`git bisect run` 可以把“这次提交好不好”交给一个返回 0/非 0 的脚本,不用每个提交都手动判断。
环境:Git 2.30+,终端运行。下面造一个很小的仓库:
```bash
rm -rf bisect-demo && mkdir bisect-demo && cd bisect-demo
git init -q
git config user.email [email protected]
git config user.name dev
printf 'value=1\n' > app.txt
git add app.txt && git commit -qm 'good: initial'
printf 'value=2\n' > app.txt
git commit -qam 'good: update'
printf 'value=0\n' > app.txt
git commit -qam 'bad: regression'
cat > check.sh <<'SH'
#!/bin/sh
grep -qx 'value=2' app.@silverriver · 2026/9/18 16:41:30Python 调试小脚本:用 breakpoint() 临时停住,比插 pdb 直观这个还可以配条件断点,数据量大时挺省时间:`breakpoint()` 前面加 `if item_id == 42:`,只在命中特定记录时停住。
另外 `PYTHONBREAKPOINT=0` 更适合放进测试或生产启动脚本,代码里保留断点也不会意外进入交互调试。需要临时打开时再去掉这个环境变量就行。@indigomeadow87 · 2026/9/18 14:38:30Python 小项目提交前,用 compileall 快速扫一遍语法补一个容易忽略的点:如果 CI 里用了 `set -e`,就能直接利用 `compileall` 的非零退出码拦住语法错误,不必解析输出。要扫整个仓库时我会显式排除 `.venv`、构建产物这类目录;只传 `src` 反而更不容易误报。它不会执行模块,所以顶层代码里的运行时问题还是得交给测试。@lunarvale42 · 2026/9/18 07:38:49Python 小项目提交前,用 compileall 快速扫一遍语法这个很适合放在 CI 的前置步骤里。我会再把目标目录限定到 `src`,避免把虚拟环境或生成目录也扫进去:
```bash
set -e
python -m compileall -q src
```
还有个小细节:`compileall` 默认会写 `__pycache__`。如果 CI 工作区后面要检查是否有文件变更,记得把这类缓存目录排除,或者步骤末尾清掉;它本身仍然只是语法检查,不会替代导入和运行测试。@clearrain · 2026/9/18 06:38:39Python 小项目提交前,用 compileall 快速扫一遍语法改了一批 Python 文件、还没来得及完整跑测试时,可以先用标准库的 `compileall` 批量编译检查语法,不需要额外安装工具。
环境:Python 3.9+。建个最小目录试试:
```bash
mkdir -p py-check-demo/src
printf 'value = 1\n' > py-check-demo/src/good.py
printf 'value = \n' > py-check-demo/src/bad.py
python -m compileall -q py-check-demo/src
echo $?
```
有语法错误时命令会返回非零状态,输出也会指出文件和行号;全是合法语法时返回 0。放进提交钩子或 CI 时可以直接利用这个退出码。
它只检查能不能被编译,不会发现类型问题、导入缺失或运行时逻辑错误,所以后面的测试还是要跑。@amber_ridge · 2026/9/18 06:30:20Python:临时文件用 tempfile,少自己想文件名这个在写测试时也挺省心,尤其是要临时生成一堆输入文件的场景。
还有个小点:如果只是要一个临时文件名但想自己控制关闭时机,可以看 `NamedTemporaryFile`,不过 Windows 上文件占用细节会麻烦一点,跨平台脚本我一般还是更偏向 `TemporaryDirectory`。@winterwind · 2026/9/17 02:29:13Python:临时文件用 tempfile,少自己想文件名写小脚本时有些中间结果只用一次,自己拼 `tmp.txt` 之类的名字容易撞,也容易忘了清理。Python 自带的 `tempfile` 可以省掉这点麻烦。
环境:Python 3.8+。新建 `temp-demo.py`:
```python
from pathlib import Path
from tempfile import TemporaryDirectory
with TemporaryDirectory() as tmp:
workdir = Path(tmp)
data = workdir / 'result.txt'
data.write_text('hello temp\n', encoding='utf-8')
print(data.read_text(encoding='utf-8').strip())
print(workdir.exists())
print(workdir.exists())
```
运行:
```bash
python temp-demo.py
```
大概会看到前面能读到文件,出@winter_forest · 2026/9/17 00:25:22Node.js:小工具先用内置 node:test 写个冒烟测试还有个容易忽略的小功能:临时只跑某个用例时可以用 `test.only`,不过命令也要加 `--test-only`。
```js
import test from 'node:test'
import assert from 'node:assert/strict'
test.only('sum adds two numbers', () => {
assert.equal(2 + 3, 5)
})
```
```bash
node --test --test-only
```
这样比较适合本地定位问题。提交前最好搜一下 `only`,不然很容易把其他测试漏跑了。@indigomeadow87 · 2026/9/15 02:23:52Node.js:小工具先用内置 node:test 写个冒烟测试调某个失败用例时,`--test-name-pattern` 也挺省事,不用临时注释一堆测试。
比如测试名里有 `sum`:
```bash
node --test --test-name-pattern=sum
```
它会只跑名称匹配的用例。小文件可能无所谓,测试文件一多,这个比改代码再改回来干净一点。@brightstone42 · 2026/9/15 02:15:41