# Testing signals — sqlalchemy/sqlalchemy

> Canonical page: https://codevetter.com/unpack/sqlalchemy/testing-signals

# Testing signals — sqlalchemy/sqlalchemy

Scanned commit 890d62f4337fe4af1afc36358fb536cf754fc231 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Tests and CI were inspected, not executed; test existence is not a passing result. The inspected suite uses pytest, SQLAlchemy-specific fixtures and plugin machinery, async wrappers, and Nox environment selection. Concrete tests exercise compiler output, execution contracts, cache reuse, transactional recovery, async connections, and savepoints. Coverage observations remain bounded, and the inspected GitHub sessions use SQLite rather than establishing live coverage of every vendor integration.
- The inspected test framework is pytest with pytest-xdist; test/conftest.py adjusts the lib import path and executes the local bootstrap module to load SQLAlchemy's pytest plugin. — [pyproject.toml#L91-L95](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/pyproject.toml#L91-L95) [test/conftest.py#L23-L41](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/conftest.py#L23-L41) [test/conftest.py#L43-L59](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/conftest.py#L43-L59)
- test/sql/test_compiler.py asserts exact SELECT rendering and validates limit/offset coercion, including rejection of nonnumeric strings. — [test/sql/test_compiler.py#L292-L318](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/sql/test_compiler.py#L292-L318)
- test/engine/test_execute.py checks that Connection.execute rejects plain strings and that exec_driver_sql rejects malformed positional parameter collections. — [test/engine/test_execute.py#L97-L119](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/engine/test_execute.py#L97-L119)
- Engine execution tests check context-manager commit and rollback; CompiledCacheTest verifies that three same-shaped inserts compile once and store one cache entry. — [test/engine/test_execute.py#L328-L332](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/engine/test_execute.py#L328-L332) [test/engine/test_execute.py#L375-L409](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/engine/test_execute.py#L375-L409) [test/engine/test_execute.py#L953-L978](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/engine/test_execute.py#L953-L978)
- ORM transaction tests cover repeated post-flush work during commit, the 100-flush guard, and PendingRollbackError recovery through explicit Session.rollback. — [test/orm/test_transaction.py#L698-L739](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/orm/test_transaction.py#L698-L739) [test/orm/test_transaction.py#L1012-L1031](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/orm/test_transaction.py#L1012-L1031)
- Async engine tests require async_dialect and cover awaited/context-managed connections, unstarted-context errors, commit, rollback, savepoints, and pool exhaustion timeouts. — [test/ext/asyncio/test_engine.py#L180-L186](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/ext/asyncio/test_engine.py#L180-L186) [test/ext/asyncio/test_engine.py#L687-L709](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/ext/asyncio/test_engine.py#L687-L709) [test/ext/asyncio/test_engine.py#L712-L756](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/ext/asyncio/test_engine.py#L712-L756) [test/ext/asyncio/test_engine.py#L771-L784](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/test/ext/asyncio/test_engine.py#L771-L784)
- PR CI selects Python 3.14/3.15 and compiled/greenlet/pure-Python variants; the referenced github-* Nox sessions target SQLite, while separate CI jobs select mypy, pep484, and pep8. — [.github/workflows/run-on-pr.yaml#L24-L35](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/.github/workflows/run-on-pr.yaml#L24-L35) [.github/workflows/run-on-pr.yaml#L60-L75](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/.github/workflows/run-on-pr.yaml#L60-L75) [noxfile.py#L213-L231](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/noxfile.py#L213-L231)
- Verification limits are explicit: pytest excludes examples/doc/lib from recursive collection, some Nox sessions deselect timing or memory tests, profiling skips unmatched platform keys, and push CI excludes free-threaded greenlet combinations and tolerates PyPy failures. — [pyproject.toml#L270-L274](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/pyproject.toml#L270-L274) [noxfile.py#L336-L358](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/noxfile.py#L336-L358) [README.unittests.rst#L101-L107](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/README.unittests.rst#L101-L107) [.github/workflows/run-test.yaml#L54-L69](https://github.com/sqlalchemy/sqlalchemy/blob/890d62f4337fe4af1afc36358fb536cf754fc231/.github/workflows/run-test.yaml#L54-L69)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
