Skip to main content

python-test-reviewer

Expert guidance for reviewing Python tests in the Matter (connectedhomeip) repository. Use this skill when reviewing changes to tests, specifically targeting common pitfalls in async execution, mocking cluster interactions, and assertion quality.

来源信息

仓库
project-chip/connectedhomeip
最近来源活动
2026年4月22日 23:34
检测到的 SKILL.md 语言
英语
星标
8,960
分支
2,486

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
python-test-reviewer
description
Expert guidance for reviewing Python tests in the Matter (connectedhomeip) repository. Use this skill when reviewing changes to tests, specifically targeting common pitfalls in async execution, mocking cluster interactions, and assertion quality.
# Python Test Reviewer Skill This skill provides a checklist and set of principles for reviewing Python tests within the Matter repository. ## Core Review Principles - **Prefer Real Interactions Over Mocks**: For integration tests, prioritize using the real Matter stack (via fixtures) unless the interaction is too complex or slow. - **Explicit Assertions**: Never accept tests that "pass by not crashing." Every test must have at least one clear, meaningful assertion. - **Async Hygiene**: Matter is heavily asynchronous. Ensure async patterns are used correctly. ## Specific Checkpoints ### 1. Asyncio Usage - **Check**: Are all awaitable calls (like `devCtrl.ReadAttribute`) actually awaited? - **Propagate Exceptions in Parallel Code**: When using concurrent.futures or similar parallel execution mechanisms, ensure that exceptions thrown in background threads are not silently ignored. Call .result() on futures to propagate errors. ### 2. Mocking Cluster Interactions - **Guideline**: When mocking cluster responses, ensure the mock structure matches the `chip.clusters` attributes or commands exactly. - **Pitfall**: Avoid mocking the entire `ChipDeviceCtrl` if you only need to mock a single attribute read. ### 3. Code Style - **Re-use**: Avoid re-writing code that is present in matter/testing or the chip core libraries. If you are creating a class or function that is substantially similar to existing classes or functions, consider whether extension would be preferable to duplication - **Attribute reads**: Prefer using read_single_attribute_check_success in matter/testing to the base Read and ReadAttribute functions in ChipDeviceCtrl.py unless there is a good reason. This function contains additional checks that are useful for testing. - **Exceptions**: Avoid `except Exception` - use a specific exception - **try / except can hide bugs**: Avoid fixing CI issues with a try: except:. This pattern can hide real bugs that should be fixed and is a code smell. Try except blocks should only be used where the exception is expected and that should normally include an assertion that the exception happens or a comment explaining in detail why the exception is thrown and how this is spec compliant. - **Sleeps can hide bugs**: a sleep in a test is a code smell. Ensure sleeps in tests are actually required. If the test is using sleep to wait for the device to do something, consider whether a subscription can be used instead. - **Tolerances should be well considered**: If there is a fudge factor built in, ensure the logic is both explained and reasonable. - **Use dataclass**: Do not use dicts with string keys. Use dataclasses with named members instead. This helps programmers avoid uncaught typos. - **Avoid Decorative Separators**: Remove long lines of hashes (e.g., ###########) or other decorative separators. Use standard spacing or docstrings instead. - **Cleanup of Stale Code**: Remove outdated TODO comments, unbound variables, and leftover debugging code. - **Type Hints**: Use type hints for function signatures to improve readability and maintainability, especially for functions that are part of the test framework or are likely to be reused. - **TODOs**: TODOs should be linked to a tracking issue and used sparingly. ### 4. Matter-Specific Patterns - **Commissioning**: If the test involves commissioning, ensure it uses the standard commissioning fixtures to avoid duplicated setup logic. - **IDs**: IDs and values should be taken from the codegen files (ex. Objects.py). Values that are not in the codegen should be flagged for follow up ### 5. Testing failures - **Test for unexpected successes**: If a test is meant to verify that an error condition is properly handled, ensure that it fails if the error condition does not occur. ## Feedback Style - Be concise. - Reference specific lines. - If a pattern is repeated across many tests, suggest a helper function or fixture.
在 GitHub 查看