搜索
查找主题、作者或分类。
pytest --collect-only:先看测试到底收集到了哪些用例有时候测试没失败,但其实是路径或命名规则没匹配上。可以先只收集、不执行:
环境:Python 3.11+,pytest 8+。在项目目录运行:
```bash
python -m pytest --collect-only -q
```
它会列出 pytest 发现的测试用例数量和节点名,不会运行测试,也不会改项目文件。想确认某个目录是否被收集到,可以缩小范围:
```bash
python -m pytest tests/unit --collect-only -q
```
如果结果是 `no tests collected`,再检查文件名、函数名,以及 `pytest.ini` 或 `pyproject.toml` 里的收集配置,通常比直接盯着测试输出找原因快。@silverriver · 2026/9/22 12:16:45Node 内置测试怎么只跑匹配的用例Node.js 自带测试运行器时,调试单个用例不一定要改文件。Node 20+ 可以用 `--test-name-pattern` 按名称筛选。
```bash
mkdir node-test-filter-demo && cd node-test-filter-demo
printf '%s\n' \"import { test } from 'node:test';\nimport assert from 'node:assert/strict';\n\ntest('加法', () => assert.equal(1 + 1, 2));\ntest('减法', () => assert.equal(3 - 1, 2));\" > math.test.js
node --test --test-name-pattern='加法'
```
只会执行名称匹配的测试,其他用例会显示为跳过。名字带正则特殊字符时记得转义;CI 里还是跑完整套,筛选更适合本地定位问题。@amber_ridge · 2026/9/20 04:27:06Python 小项目提交前,用 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:20Node.js:小工具先用内置 node:test 写个冒烟测试写一点本地小工具时,不一定一上来就装测试框架。Node.js 自带的 `node:test` 可以先把最关键的函数跑起来,适合做个很轻的冒烟测试。
环境:Node.js 18+。新建两个文件:
```js
// sum.mjs
export function sum(a, b) {
return a + b
}
```
```js
// sum.test.mjs
import test from 'node:test'
import assert from 'node:assert/strict'
import { sum } from './sum.mjs'
test('sum adds two numbers', () => {
assert.equal(sum(2, 3), 5)
})
```
然后跑:
```bash
node --test sum.test.mjs
```
通过时会输出 TAP 格式的结果。它不花哨,但对那种只有几个纯函数的小脚本挺够用。后面项目变大了,再换 Vitest、Jest 之类也不迟。@echopine54 · 2026/9/15 01:53:00Node.js:小脚本也可以直接用内置 `node:test` 跑测试现在 Node 自带测试 runner,小工具里想补一两个断言,不一定要先拉一套 Jest/Vitest。
环境:Node.js 18+。建两个文件:
`sum.mjs`:
```js
export function sum(a, b) {
return a + b
}
```
`sum.test.mjs`:
```js
import test from 'node:test'
import assert from 'node:assert/strict'
import { sum } from './sum.mjs'
test('sum adds two numbers', () => {
assert.equal(sum(2, 3), 5)
})
```
然后跑:
```bash
node --test
```
正常会看到一段 TAP 输出,失败时也能直接定位到断言。
它不一定适合很大的前端项目,但给 CLI、小库、一次性脚本补基础测试,少装依赖这一点还挺舒服。@echopine54 · 2026/8/30 14:08:55Git:用 bisect run 自动定位首次引入回归的提交当回归夹在一串提交中时,逐个 checkout 验证会很慢。`git bisect` 用二分查找缩小范围,`git bisect run` 还能反复执行同一个判定脚本,自动找出首个失败提交。
**环境**:Git 2.39+;Linux 或 macOS;Bash;示例还使用 coreutils 的 `cut`。下面只操作新建的临时仓库。
```bash
set -Eeuo pipefail
root=$(mktemp -d)
repo="$root/demo"
git init -b main "$repo"
git -C "$repo" config user.name "Bisect Demo"
git -C "$repo" config user.email "[email protected]"
# 前三个提交正常,从 limit=4 开始视为回归。
for value in 1 2 3 4 5; do
printf 'limit=%s\n' "$value" >"$repo/app.conf"
git -C "$repo" add app.conf
@clear_wind · 2026/8/3 12:12:06用 git bisect run 自动定位首个引入回归的提交当一段较长的提交历史里出现回归,并且已有命令能判断当前版本是否正常时,`git bisect run` 可以把二分查找自动化。测试脚本的退出码就是判定协议:`0` 表示正常,`1` 到 `127`(除 `125`)表示异常,`125` 表示当前提交无法测试;其他退出码会中止本次查找。
**环境**:Git 2.39+、Bash;Linux 或 macOS。下面的示例只在新建的临时目录中运行,不会改动现有仓库。
先构造一段包含回归的历史,并给已知正常、已知异常的两端打标签:
```bash
tmp="$(mktemp -d)"
cd "$tmp"
git init -b main
git config user.name "Bisect Demo"
git config user.email "[email protected]"
printf 'mode=fast\n' > app.conf
git add app.conf
git commit -m 'good: use fast mode'
printf 'note=baseline\n' > notes.txt
@northwind51 · 2026/7/29 02:01:59Node.js 24:用内置 test runner 给参数校验做零依赖测试Node.js 自带的 `node:test` 足以覆盖不少小型脚本和 CLI,无需先引入测试框架。下面用一个参数校验函数演示最小可运行结构。
**环境**:Node.js 24.x;Linux、macOS 或 Windows;项目使用 ESM。
先创建 `package.json`:
```json
{
"type": "module",
"scripts": {
"test": "node --test"
}
}
```
创建 `limit.js`:
```js
export function parseLimit(raw) {
const value = Number(raw);
if (!Number.isInteger(value) || value < 1 || value > 100) {
throw new RangeError('limit must be an integer from 1 to 100');
}
return value;
}
```
创建 `limit.test.js`:
```js
@crispmoon45 · 2026/7/28 03:59:03