Changelog¶
0.6¶
| Release date: | in development |
|---|---|
| Tested on: | CPython 2.5 - 2.7 and 3.1 - 3.2, PyPy 1.5 |
- New attest command for discovering and running tests.
- Added the 16-color styles light and dark and the complementary
colorscheme option to
FancyReporter. - New
tempdir()context for creating a temporary directory. - New
warns()context to check for warnings. - The decorator methods now default to simply registering functions and
leaving the original in place. Added replace_tests and replace_contexts
parameters to the
Testsconstructor for backwards compatibility. - Added a bunch of new options to
Tests.run():- debugger – enter PDB when tests fail
- fail_fast – stop at first failure
- full_tracebacks – don’t clean tracebacks
- ipdb_debugger – enter IPDB when tests fail
- keyboard_interrupt – let CTRL+C propagate
- native_assert – don’t hook the assert statement
- no_capture – don’t capture stderr and stdout
- Added
XUnitReporter. - Added
test_case()to complementtest_suite(). - The
Testsconstructor can now be passed a single string without wrapping it in iterable. Tests.register()now recursively scans modules and only adds tests if they haven’t already been added.- Support for CPython 3.2 and PyPy 1.5.
0.5.2¶
| Release date: | 2011-04-19 |
|---|---|
| Tested on: | CPython 2.5 - 2.7 and 3.1, PyPy 1.4.1 |
Bugs fixed:
- 0.5 requires progressbar 2.3; version requirement for dependency added.
- The setuptools-git plugin wasn’t working well with Attest as a test
dependency with
setup.py test, so it has been dropped in favour of aMANIFEST.infile. - Calls and attributes are now evaluated by the assert hook. The previous behaviour was intentional, but turned out to be less helpful.
- The assert hook now injects explicit calls to
globals()andlocals()rather than relying on stack frame inspection. This fixes a bug on CPython 2.5 whereinspect.stack()tried to read lines from the source file, based on the line numbers from the generated source, which could end fatally when the line number exceeded the number of lines in the source file. - Assertions are now correctly counted when tests are run more than once in the same process.
0.5.1¶
| Release date: | 2011-03-25 |
|---|---|
| Tested on: | CPython 2.5 - 2.7 and 3.1, PyPy 1.4.1 |
Bugs fixed:
- The assert hook failed to evaluate list comprehensions and similar constructs because the loop variable was treated as a variable to be looked up in the symbol table.
- Variables referencing objects implementing
__name__not returning a string caused an exception to exit early, if used with the assert hook in a failing condition.
0.5¶
| Code name: | Ghost Writer |
|---|---|
| Release date: | 2011-03-08 |
| Tested on: | CPython 2.5 - 2.7 and 3.1, PyPy 1.4.1 |
- Support for evaluated testing with the assert statement by means of an
import hook using the
_astmodule. - Assertions of all kinds now run with
python -O. - Deprecated the
Assertclass in favor of the import hook. - Deprecated
Loaderin favor of atest_loaderattribute on reporters. - Added the
QuickFixReporterfor testing from Vim and other editors. - Test functions now get as many context arguments as their signature asks for.
- Organized the code into modules in a package, but everything can still be
imported directly from the
attestpackage. - Added runnable modules for running test suites by dotted name,
python -matteston Python 2.7 or newer,python -mattest.runon older versions.
0.4¶
| Release date: | 2011-01-08 |
|---|---|
| Tested on: | CPython 2.5 - 2.7 and 3.1, PyPy 1.4.1 |
- Support for Python 3.1 and PyPy (besides existing support for 2.5-2.7).
- Reporters are now loaded via setuptools entry points, allowing
third-party packages to register themselves automatically. The
get_all_reporters()function was added to complement this extensibility. TestResultwas introduced and is now passed to reporters instead of the more limited set of arguments that were previously passed. This change is not backwards-compatible if you have custom reporters.- Conditional test registration:
Tests.test_if(),Tests.register_if(),test_if(). - Many new
Assertmethods:isinstance()andnot_isinstance()issubclass()andnot_issubclass()json(),css()andxpath()attr()andpassed_to()
- Import fallbacks can be tested using
disable_imports(). - The
Testsconstructor now accepts an iterable of contexts. - Passing
Assertobjects to the Assert constructor no-longer wraps multiple levels. - Test names now include the class name for class-based test.
- Test registration via dotted name now handles unicode.
0.3¶
| Release date: | 2010-11-27 |
|---|---|
| Tested on: | CPython 2.6 |
Noneif yielded from a context is no-longer passed as arguments to tests.Assert.is_()andAssert.is_not(), if passed anAssertinstance, will unwrap it and test against the original object.
0.2¶
| Release date: | 2010-11-26 |
|---|---|
| Tested on: | CPython 2.6 |
- Functional tests can now have multiple contexts.
- Tests can be registered by dotted name (import path as string).
- Collections have a command-line interface via
Tests.main().
0.1¶
| Release date: | 2010-11-25 |
|---|---|
| Tested on: | CPython 2.6 |