sure
utility belt for automated testing in python for python
Decision gist · record as of 2026-08-14
Yes, with conditions. sure is stable and has no known vulnerabilities, making it safe to adopt. However, high install friction (source-only distribution) and aging maintenance mean it's best suited for projects where readable test syntax is a priority and you're comfortable with a library that receives infrequent updates. The GPLv3+ copyleft license requires careful review if your project uses a different license.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Installation friction is high: the package ships as a source distribution with no prebuilt wheels.
- Last release was over a year ago and maintenance status is aging, though the repository remains active with recent commits and the codebase is marked Production/Stable.
License · maintenance · safety
copyleft license (copyleft) — sure is licensed under GPLv3+, a copyleft license. Any code that imports sure into a proprietary or differently-licensed project may face licensing compliance obligations; review your project's license compatibility before adopting.
last release 2023-02-06 (1285 days) · last repo commit 2025-03-01 · 699 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 348,843 downloads/mo, #7,338 on PyPI
Alternatives
Verify before relying
pip install sure
import sure
(4).should.equal(2 + 2)
{'foo': 'bar'}.should.have.key('foo')- Whether sure integrates cleanly with modern test runners (pytest, unittest) or requires special configuration.
- Performance characteristics when chaining many assertions in large test suites.
- Compatibility with type checkers (mypy, pyright) given the dynamic attribute-chaining syntax.
- Current maintenance roadmap and likelihood of future updates beyond the 2023-02-06 release.
What it is and what it does
sure is a testing assertion library that layers fluent, chainable syntax on top of Python's standard testing capabilities. Instead of writing `assert x == y`, you write `x.should.equal(y)`, building readable test expressions that flow more like natural language. The library is modeled after RSpec Expectations and should.js, bringing that idiom to Python.
It supports assertions on numbers, strings, dictionaries, and collections, with methods like `.should.equal()`, `.should.have.key()`, and `.shouldnt.be.equal()` that chain together to form readable test conditions. The package has no runtime dependencies and works across Python 3.6, 3.7, 3.8, 3.9, 3.10, and 3.11 on CPython and PyPy, though maintenance status is aging.
Use it for
- Writing unit tests with more readable, expressive assertion chains instead of bare assert statements.
- Validating dictionary structure and content in integration tests using `.should.have.key()` chains.
- Testing string transformations and comparisons using fluent syntax (e.g., `'HELLO'.lower().should.equal('hello')`).
- Building test suites where assertion readability and developer experience are priorities.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, with conditions.
sure is stable and has no known vulnerabilities, making it safe to adopt. However, high install friction (source-only distribution) and aging maintenance mean it's best suited for projects where readable test syntax is a priority and you're comfortable with a library that receives infrequent updates. The GPLv3+ copyleft license requires careful review if your project uses a different license.
Install
sure on PyPI
Before you install
Installation friction is high: the package ships as a source distribution with no prebuilt wheels. Last release was over a year ago and maintenance status is aging, though the repository remains active with recent commits and the codebase is marked Production/Stable.
License in practice
sure is licensed under GPLv3+, a copyleft license. Any code that imports sure into a proprietary or differently-licensed project may face licensing compliance obligations; review your project's license compatibility before adopting.
Quickstart
pip install sure
import sure
(4).should.equal(2 + 2)
{'foo': 'bar'}.should.have.key('foo')
Verify before relying
- Whether sure integrates cleanly with modern test runners (pytest, unittest) or requires special configuration.
- Performance characteristics when chaining many assertions in large test suites.
- Compatibility with type checkers (mypy, pyright) given the dynamic attribute-chaining syntax.
- Current maintenance roadmap and likelihood of future updates beyond the 2023-02-06 release.
Package facts
| License | copyleft license copyleft |
| Python support | Not specified |
| Install friction | High. Source build required |
| Runtime dependencies | None |
| Maintenance | Aging 1,285 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 348,843 / month, #7,338 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableEnvironment :: ConsoleLicense :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)Operating System :: MacOS :: MacOS XOperating System :: POSIXOperating System :: POSIX :: LinuxProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: ImplementationProgramming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyTopic :: Software Development :: Testing |
Evidence: sure-2.0.1.tar.gz
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “chainable test assertions”
- suresure provides fluent, chainable assertion syntax for Python testing,…
- surerSurer provides fluent, RSpec-inspired assertion syntax for Python…
- ensureensure provides literate assertion helpers for validating conditions…
Give your agent the search over MCP, or paste the wish link into any chat.
More Testing packages
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
pytest is a testing framework that lets you write test functions using plain assert statements and automatically discovers and runs them, with detailed failure reporting.
virtualenv creates isolated Python environments where packages can be installed independently without affecting the system Python or other projects.
Coverage.py measures which lines of Python code are executed during test runs, reporting coverage percentages and identifying untested code paths.
Install it if you want to measure test completeness or enforce coverage thresholds in your project.
pytest-asyncio is a pytest plugin that enables writing and running async test functions using the asyncio library, allowing developers to await code directly within test cases.
Install it if you write tests for any asyncio-based code.
A pytest plugin that generates test reports in Common Test Report Format (CTRF) as JSON, compatible with pytest-xdist and pytest-playwright for distributed and browser-based testing.
Install it if you need CTRF-formatted test output for CI/CD integration or cross-tool reporting.
See also assertpy · ensure · surer · expects · expecttest · re-assert · robotframework-assertion-engine · asserts · PyHamcrest · delayed-assert