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
Tests
constructor 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
Tests
constructor 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.in
file. - 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
_ast
module. - Assertions of all kinds now run with
python -O
. - Deprecated the
Assert
class in favor of the import hook. - Deprecated
Loader
in favor of atest_loader
attribute on reporters. - Added the
QuickFixReporter
for 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
attest
package. - Added runnable modules for running test suites by dotted name,
python -mattest
on Python 2.7 or newer,python -mattest.run
on 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. TestResult
was 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
Assert
methods:isinstance()
andnot_isinstance()
issubclass()
andnot_issubclass()
json()
,css()
andxpath()
attr()
andpassed_to()
- Import fallbacks can be tested using
disable_imports()
. - The
Tests
constructor now accepts an iterable of contexts. - Passing
Assert
objects 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 |
None
if yielded from a context is no-longer passed as arguments to tests.Assert.is_()
andAssert.is_not()
, if passed anAssert
instance, 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 |