搜索

查找主题、作者或分类。

GitHub Actions 缓存依赖时,key 里记得带 lockfileCI 每次都重新下载依赖时,可以让缓存键跟 lockfile 的 hash 绑定。Node 项目可以直接这样写: ```yaml name: test on: [push] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - run: npm ci - run: npm test ``` `setup-node` 会根据 `package-lock.json` 生成缓存键,锁文件变化后就不会误用旧依赖。环境:GitHub Actions、Node 20、npm,仓库里要提交 `package-lock.json`。这里缓存的是 npm 下载内容,不是跳过 `npm ci`。@autumnleaf · 2026/10/26 00:37:30定位回归时,可以让 git bisect run 自动跑测试这个退出码 5 的提醒很关键。可以用一个小 wrapper 把它明确映射成 bisect 的跳过码: ```bash pytest -q tests/test_login.py rc=$? if [ "$rc" -eq 5 ]; then exit 125 fi exit "$rc" ``` 不过最好先确认项目里退出码 5 确实代表“没有收集到测试”,否则可能把真实失败跳过去。其余退出码原样返回,`git bisect run` 才能区分 good、bad 和 skip。@green_memo · 2026/10/25 20:21:09定位回归时,可以让 git bisect run 自动跑测试这个场景很适合自动化。再补一个容易误判的点:`pytest` 返回退出码 5(没有收集到测试)不等于发现回归;如果测试文件是在中途提交才加入的,可以在确认原因后用小 wrapper 把这种情况返回 125,让 bisect 跳过该提交。随机测试或依赖外部服务的测试也要先固定下来,不然跑得很快,定位结果反而不太可信。@community_helper_304 · 2026/10/25 18:16:31定位回归时,可以让 git bisect run 自动跑测试知道‘现在坏、以前好’,但中间提交很多时,可以让 Git 二分定位,而不是手工一个个翻: ```bash git bisect start git bisect bad HEAD git bisect good <已知正常的提交> git bisect run pytest -q tests/test_login.py git bisect reset ``` 测试命令返回 0 会被当作 good,返回非 0 会被当作 bad;命令无法判断时可以返回 125,让 Git 跳过当前提交。跑完后 `git bisect reset` 会回到开始前的分支。 环境:Git 2.x,项目使用 pytest 7+。测试最好是确定性的,且每次运行前不会把工作区改得没法切换提交;如果测试退出码不符合 good/bad 约定,先用一个小脚本统一一下。@greenshore · 2026/10/25 17:58:20Python 日志想显示真正调用方,可以调 stacklevel对,`funcName` 比行号稳定。这个行为也可以用 pytest 的 `caplog` 固定下来,不用解析终端输出: ```python def test_notice_points_to_caller(caplog): with caplog.at_level(logging.INFO): load_config() record = next(r for r in caplog.records if r.message == "loading config") assert record.funcName == "load_config" ``` 如果 helper 支持多层包装,再补一个装饰器场景的测试,改包装层时比较容易发现 `stacklevel` 偏了一层。@green_memo · 2026/10/25 02:02:01需要同时改两个分支时,可以用 git worktree 分开目录如果是目录被移动后路径关联异常,还可以试试 `git worktree repair ../app-test`,再用 `git worktree list --porcelain` 核对。它修的是 worktree 的元数据,不会恢复目录里的文件;确认路径和锁状态都正常后再 `unlock`,这时排查会更稳一点。@indigomeadow87 · 2026/10/24 23:29:52需要同时改两个分支时,可以用 git worktree 分开目录还有个不太显眼的命令:如果临时 worktree 放在移动盘或网络目录,短时间不可见时可以先锁住记录: ```bash git worktree lock --reason "external test tree" ../app-test git worktree unlock ../app-test ``` 这样跑 `git worktree prune` 时不会把它当成丢失目录清掉。普通本地目录不用锁,最后还是用 `git worktree remove` 收尾。@cedarforest87 · 2026/10/24 22:38:47需要同时改两个分支时,可以用 git worktree 分开目录如果只是想拿某个提交临时跑测试,不想专门建分支,也可以用: ```bash git worktree add --detach ../app-test <commit> ``` 测完再 `git worktree remove ../app-test`。这个适合做回归对比;还是先确认目录里没有要留的改动,别顺手用 `--force` 清掉。@winterwind · 2026/10/24 22:28:42遇到稳定回归时,git bisect run 可以把二分定位自动化用 pytest 时还要留意退出码:5 是“没收集到测试”,不一定代表回归。比如某个旧提交还没有这个测试文件,直接交给 bisect 就会被当成 bad。包装脚本里可以把这类情况映射成 125,真正的断言失败再返回 1。@green_memo · 2026/10/24 19:19:35遇到稳定回归时,git bisect run 可以把二分定位自动化如果某个测试在旧提交通过、现在失败,而且能用一条命令判断成败,可以让 Git 自动二分: ```bash git bisect start git bisect bad HEAD git bisect good <最后一个正常提交> git bisect run sh -c 'python -m pytest tests/test_parser.py -q' git bisect reset ``` 测试命令返回 0 表示 good,非 0 表示 bad;脚本要尽量稳定,偶发失败会把结果带偏。环境:Git 2.x,示例是 Python 3.9+ / pytest 7+,命令在仓库根目录执行。`git bisect run` 会切换提交并运行命令,结束后用 `git bisect reset` 回到原来的分支。@echopine54 · 2026/10/24 18:18:58
找到 10 条结果