skills/mindspeed-llm-auto-ut-skills/skills/pytest-writer/SKILL.md
专业的pytest测试用例编写助手,用于创建、编写和优化Python测试用例。当需要编写测试文件、创建测试代码、重构优化测试、调试失败测试、使用fixtures、参数化测试、断言技巧、测试覆盖率分析时使用此技能。
npx skillsauth add Ascend/agent-skills pytest-writerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
使用pytest框架编写高质量、可维护的Python测试用例。支持简单断言、自动发现、fixtures、参数化测试等pytest核心特性。
# test_sample.py
def inc(x):
return x + 1
def test_answer():
assert inc(3) == 4
运行测试:
pytest
test_*.py 或 *_test.pytest_*Test*使用简单的assert语句,pytest提供详细的失败信息:
def test_addition():
assert 1 + 1 == 2
def test_string_operations():
text = "hello"
assert text.upper() == "HELLO"
assert len(text) == 5
Fixtures用于管理测试资源和依赖关系:
import pytest
@pytest.fixture
def sample_data():
return {"name": "test", "value": 42}
def test_with_fixture(sample_data):
assert sample_data["value"] == 42
高级fixtures用法:参见 references/fixtures.md
使用@pytest.mark.parametrize减少重复代码:
@pytest.mark.parametrize("input,expected", [
(3, 4),
(5, 6),
(10, 11),
])
def test_increment(input, expected):
assert input + 1 == expected
更多参数化模式:参见 references/parametrize.md
利用pytest的断言内省功能:
def test_dict_comparison():
expected = {"a": 1, "b": 2}
actual = {"a": 1, "b": 3}
assert actual == expected # pytest会显示详细的差异
断言最佳实践:参见 references/assertions.md
tests/
├── test_auth.py
├── test_database.py
├── test_api.py
└── conftest.py # 共享fixtures
在conftest.py中定义共享fixtures:
# conftest.py
@pytest.fixture
def db_connection():
conn = create_connection()
yield conn
conn.close()
使用pytest.raises测试异常:
def test_zero_division():
with pytest.raises(ZeroDivisionError):
1 / 0
def test_value_error():
with pytest.raises(ValueError) as exc_info:
int("invalid")
assert "invalid literal" in str(exc_info.value)
@pytest.mark.skip(reason="功能未实现")
def test_not_implemented():
pass
@pytest.mark.skipif(sys.version_info < (3, 8), reason="需要Python 3.8+")
def test_python38_feature():
pass
@pytest.mark.xfail
def test_known_failure():
assert False # 预期失败
test_user_login_with_valid_credentialsdef test_calculate_total_with_discount():
# Arrange
cart = Cart(items=[Item(price=100), Item(price=50)])
discount = 0.1
# Act
total = cart.calculate_total(discount)
# Assert
assert total == 135
更多最佳实践:参见 references/best-practices.md
# 运行所有测试
pytest
# 运行特定文件
pytest tests/test_auth.py
# 运行特定测试函数
pytest tests/test_auth.py::test_login
# 运行匹配模式的测试
pytest -k "login"
# 显示详细输出
pytest -v
# 显示print语句输出
pytest -s
# 在第一个失败时停止
pytest -x
# 运行上次失败的测试
pytest --lf
# 生成覆盖率报告
pytest --cov=src
# 生成HTML报告
pytest --cov=src --cov-report=html
pytest -v --tb=long
def test_debugging():
import pdb; pdb.set_trace()
result = complex_calculation()
assert result == expected
或在命令行:
pytest --pdb
详细参考文档:
testing
Kubernetes 集群健康检查与安全修复 — 诊断问题,用户确认后执行修复
tools
昇腾NPU CANN Toolkit+Kernels+NNAL安装部署技能。支持从官网下载run包安装和从Docker镜像提取两种方式,覆盖驱动检查、包下载、安装、环境变量配置与验证全流程。当用户需要安装CANN全套组件或指定版本CANN到自定义路径时调用。
development
编译 ATB (Ascend Transformer Boost) 测试框架。当用户需要编译 ATB 测试框架、 运行 CSV 测试、或构建 atb_test_framework 时调用。支持全量编译(含第三方依赖克隆与源替换) 和增量编译两种模式。需在 Docker 容器内配合 CANN 环境执行。
databases
ATB OPS→ACLNN 迁移标准化工作流主模板。整合前置学习、设计文档生成、CSV用例设计、 实际迁移、编译验证、测试验证全流程,提供明确的阶段 Gates 和用户确认机制。