# Testing conventions constraint (YAML) rules: - name: test_naming rule: "Use pytest and name tests test_*.py and test_* functions." examples: - good: "tests/test_text_pipeline.py" - bad: "tests/text_pipeline_test.py" - name: fixtures_and_conftest rule: "Place shared fixtures in tests/conftest.py or tests/fixtures/ for reuse." examples: - good: "use fixtures declared in tests/conftest.py" - name: assert_raises rule: "Explicitly assert expected exceptions with pytest.raises for invalid input." examples: - good: | import pytest def test_invalid_input(): with pytest.raises(ValueError): function_under_test('bad') enforcement_examples: - "Run pytest in CI; fail if tests don't run or if there are regressions."