<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi All, <br>
<br>
I'm pleased to announce the release of testfixtures 6.0.0 featuring
the following: <br>
<meta charset="utf-8">
<ul class="simple" style="color: rgb(0, 0, 0); font-family:
sans-serif; font-size: 16px; font-style: normal;
font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); text-decoration-style: initial; text-decoration-color:
initial;">
<meta charset="utf-8">
<li style="box-sizing: border-box; list-style: disc; margin-left:
24px;"><a class="reference internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.compare"
title="testfixtures.compare" style="box-sizing: border-box;
color: rgb(155, 89, 182); text-decoration: none; cursor:
pointer;"><code class="xref py py-func docutils literal"
style="box-sizing: border-box; font-family: Consolas,
"Andale Mono WT", "Andale Mono",
"Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px;
color: rgb(64, 64, 64); overflow-x: auto; font-weight:
bold;"><span class="pre" style="box-sizing: border-box;">compare()</span></code></a><span> </span>will
now handle objects that do not natively support equality or
inequality and will treat these objects as equal if they are of
the same type and have the same attributes as found using<span> </span><a
class="reference external"
href="https://docs.python.org/3/library/functions.html#vars"
title="(in Python v3.6)" style="box-sizing: border-box; color:
rgb(155, 89, 182); text-decoration: none; cursor: pointer;"><code
class="xref py py-func docutils literal" style="box-sizing:
border-box; font-family: Consolas, "Andale Mono
WT", "Andale Mono", "Lucida
Console", "Lucida Sans Typewriter",
"DejaVu Sans Mono", "Bitstream Vera Sans
Mono", "Liberation Mono", "Nimbus Mono
L", Monaco, "Courier New", Courier,
monospace; font-size: 12px; white-space: nowrap; max-width:
100%; background: rgb(255, 255, 255); border: 1px solid
rgb(225, 228, 229); padding: 2px 5px; color: rgb(64, 64,
64); overflow-x: auto; font-weight: bold;"><span class="pre"
style="box-sizing: border-box;">vars()</span></code></a><span> </span>or<span> </span><code
class="docutils literal" style="box-sizing: border-box;
font-family: Consolas, "Andale Mono WT",
"Andale Mono", "Lucida Console",
"Lucida Sans Typewriter", "DejaVu Sans
Mono", "Bitstream Vera Sans Mono",
"Liberation Mono", "Nimbus Mono L",
Monaco, "Courier New", Courier, monospace;
font-size: 12px; white-space: nowrap; max-width: 100%;
background: rgb(255, 255, 255); border: 1px solid rgb(225,
228, 229); padding: 2px 5px; color: rgb(231, 76, 60);
overflow-x: auto;"><span class="pre" style="box-sizing:
border-box;">__slots__</span></code>. This is a change in
behaviour which, while it could conceivably cause tests that are
currently failing to pass, should not cause any currently
passing tests to start failing.</li>
<li style="box-sizing: border-box; list-style: disc; margin-left:
24px;">Add support for writing to the<span> </span><code
class="docutils literal" style="box-sizing: border-box;
font-family: Consolas, "Andale Mono WT",
"Andale Mono", "Lucida Console",
"Lucida Sans Typewriter", "DejaVu Sans
Mono", "Bitstream Vera Sans Mono",
"Liberation Mono", "Nimbus Mono L",
Monaco, "Courier New", Courier, monospace;
font-size: 12px; white-space: nowrap; max-width: 100%;
background: rgb(255, 255, 255); border: 1px solid rgb(225,
228, 229); padding: 2px 5px; color: rgb(231, 76, 60);
overflow-x: auto;"><span class="pre" style="box-sizing:
border-box;">stdin</span></code><span> </span>of<span> </span><a
class="reference internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.popen.MockPopen"
title="testfixtures.popen.MockPopen" style="box-sizing:
border-box; color: rgb(155, 89, 182); text-decoration: none;
cursor: pointer;"><code class="xref py py-class docutils
literal" style="box-sizing: border-box; font-family:
Consolas, "Andale Mono WT", "Andale
Mono", "Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px;
color: rgb(64, 64, 64); overflow-x: auto; font-weight:
bold;"><span class="pre" style="box-sizing: border-box;">MockPopen</span></code></a><span> </span>instances.</li>
<li style="box-sizing: border-box; list-style: disc; margin-left:
24px;">The default behaviour of<span> </span><a class="reference
internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.popen.MockPopen"
title="testfixtures.popen.MockPopen" style="box-sizing:
border-box; color: rgb(155, 89, 182); text-decoration: none;
cursor: pointer;"><code class="xref py py-class docutils
literal" style="box-sizing: border-box; font-family:
Consolas, "Andale Mono WT", "Andale
Mono", "Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px;
color: rgb(64, 64, 64); overflow-x: auto; font-weight:
bold;"><span class="pre" style="box-sizing: border-box;">MockPopen</span></code></a><span> </span>can
now be controlled by providing a callable.</li>
<li style="box-sizing: border-box; list-style: disc; margin-left:
24px;"><a class="reference internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.LogCapture.actual"
title="testfixtures.LogCapture.actual" style="box-sizing:
border-box; color: rgb(155, 89, 182); text-decoration: none;
cursor: pointer;"><code class="xref py py-meth docutils
literal" style="box-sizing: border-box; font-family:
Consolas, "Andale Mono WT", "Andale
Mono", "Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px;
color: rgb(64, 64, 64); overflow-x: auto; font-weight:
bold;"><span class="pre" style="box-sizing: border-box;">LogCapture.actual()</span></code></a><span> </span>is
now part of the documented public interface.</li>
<li style="box-sizing: border-box; list-style: disc; margin-left:
24px;">Add<span> </span><a class="reference internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.LogCapture.check_present"
title="testfixtures.LogCapture.check_present"
style="box-sizing: border-box; color: rgb(155, 89, 182);
text-decoration: none; cursor: pointer;"><code class="xref py
py-meth docutils literal" style="box-sizing: border-box;
font-family: Consolas, "Andale Mono WT",
"Andale Mono", "Lucida Console",
"Lucida Sans Typewriter", "DejaVu Sans
Mono", "Bitstream Vera Sans Mono",
"Liberation Mono", "Nimbus Mono L",
Monaco, "Courier New", Courier, monospace;
font-size: 12px; white-space: nowrap; max-width: 100%;
background: rgb(255, 255, 255); border: 1px solid rgb(225,
228, 229); padding: 2px 5px; color: rgb(64, 64, 64);
overflow-x: auto; font-weight: bold;"><span class="pre"
style="box-sizing: border-box;">LogCapture.check_present()</span></code></a><span> </span>to
help with assertions about a sub-set of messages logged along
with those that are logged in a non-deterministic order.</li>
<li style="box-sizing: border-box; list-style: disc; margin-left:
24px;"><a class="reference internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.Comparison"
title="testfixtures.Comparison" style="box-sizing: border-box;
color: rgb(155, 89, 182); text-decoration: none; cursor:
pointer;"><code class="xref py py-class docutils literal"
style="box-sizing: border-box; font-family: Consolas,
"Andale Mono WT", "Andale Mono",
"Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px;
color: rgb(64, 64, 64); overflow-x: auto; font-weight:
bold;"><span class="pre" style="box-sizing: border-box;">Comparison</span></code></a><span> </span>now
supports objects with<span> </span><code class="docutils
literal" style="box-sizing: border-box; font-family: Consolas,
"Andale Mono WT", "Andale Mono",
"Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px; color:
rgb(231, 76, 60); overflow-x: auto;"><span class="pre"
style="box-sizing: border-box;">__slots__</span></code>.</li>
<li style="box-sizing: border-box; list-style: disc; margin-left:
24px;">Added<span> </span><a class="reference internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.ShouldAssert"
title="testfixtures.ShouldAssert" style="box-sizing:
border-box; color: rgb(155, 89, 182); text-decoration: none;
cursor: pointer;"><code class="xref py py-class docutils
literal" style="box-sizing: border-box; font-family:
Consolas, "Andale Mono WT", "Andale
Mono", "Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px;
color: rgb(64, 64, 64); overflow-x: auto; font-weight:
bold;"><span class="pre" style="box-sizing: border-box;">ShouldAssert</span></code></a><span> </span>as
a simpler tool for testing test helpers.</li>
<li style="box-sizing: border-box; list-style: disc; margin-left:
24px;">Changed the internals of the various decorators
testfixtures provides such that they can be used in conjunction
with<span> </span><a class="reference external"
href="https://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch"
title="(in Python v3.6)" style="box-sizing: border-box; color:
rgb(155, 89, 182); text-decoration: none; cursor: pointer;"><code
class="xref py py-func docutils literal" style="box-sizing:
border-box; font-family: Consolas, "Andale Mono
WT", "Andale Mono", "Lucida
Console", "Lucida Sans Typewriter",
"DejaVu Sans Mono", "Bitstream Vera Sans
Mono", "Liberation Mono", "Nimbus Mono
L", Monaco, "Courier New", Courier,
monospace; font-size: 12px; white-space: nowrap; max-width:
100%; background: rgb(255, 255, 255); border: 1px solid
rgb(225, 228, 229); padding: 2px 5px; color: rgb(64, 64,
64); overflow-x: auto; font-weight: bold;"><span class="pre"
style="box-sizing: border-box;">unittest.mock.patch()</span></code></a><span> </span>on
the same test method or function.</li>
<li style="box-sizing: border-box; list-style: disc; margin-left:
24px;">Changed the internals of<span> </span><a class="reference
internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.ShouldRaise"
title="testfixtures.ShouldRaise" style="box-sizing:
border-box; color: rgb(155, 89, 182); text-decoration: none;
cursor: pointer;"><code class="xref py py-class docutils
literal" style="box-sizing: border-box; font-family:
Consolas, "Andale Mono WT", "Andale
Mono", "Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px;
color: rgb(64, 64, 64); overflow-x: auto; font-weight:
bold;"><span class="pre" style="box-sizing: border-box;">ShouldRaise</span></code></a><span> </span>and<span> </span><a
class="reference internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.Comparison"
title="testfixtures.Comparison" style="box-sizing: border-box;
color: rgb(155, 89, 182); text-decoration: none; cursor:
pointer;"><code class="xref py py-class docutils literal"
style="box-sizing: border-box; font-family: Consolas,
"Andale Mono WT", "Andale Mono",
"Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px;
color: rgb(64, 64, 64); overflow-x: auto; font-weight:
bold;"><span class="pre" style="box-sizing: border-box;">Comparison</span></code></a><span> </span>to
make use of<span> </span><a class="reference internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.compare"
title="testfixtures.compare" style="box-sizing: border-box;
color: rgb(155, 89, 182); text-decoration: none; cursor:
pointer;"><code class="xref py py-func docutils literal"
style="box-sizing: border-box; font-family: Consolas,
"Andale Mono WT", "Andale Mono",
"Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px;
color: rgb(64, 64, 64); overflow-x: auto; font-weight:
bold;"><span class="pre" style="box-sizing: border-box;">compare()</span></code></a><span> </span>and
so provide nested comparisons with better feedback. This finally
allows<span> </span><a class="reference internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.ShouldRaise"
title="testfixtures.ShouldRaise" style="box-sizing:
border-box; color: rgb(155, 89, 182); text-decoration: none;
cursor: pointer;"><code class="xref py py-class docutils
literal" style="box-sizing: border-box; font-family:
Consolas, "Andale Mono WT", "Andale
Mono", "Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px;
color: rgb(64, 64, 64); overflow-x: auto; font-weight:
bold;"><span class="pre" style="box-sizing: border-box;">ShouldRaise</span></code></a><span> </span>to
deal with Django’s<span> </span><a class="reference external"
href="http://django.readthedocs.io/en/latest/ref/exceptions.html#django.core.exceptions.ValidationError"
title="(in Django v2.1)" style="box-sizing: border-box; color:
rgb(155, 89, 182); text-decoration: none; cursor: pointer;"><code
class="xref py py-class docutils literal" style="box-sizing:
border-box; font-family: Consolas, "Andale Mono
WT", "Andale Mono", "Lucida
Console", "Lucida Sans Typewriter",
"DejaVu Sans Mono", "Bitstream Vera Sans
Mono", "Liberation Mono", "Nimbus Mono
L", Monaco, "Courier New", Courier,
monospace; font-size: 12px; white-space: nowrap; max-width:
100%; background: rgb(255, 255, 255); border: 1px solid
rgb(225, 228, 229); padding: 2px 5px; color: rgb(64, 64,
64); overflow-x: auto; font-weight: bold;"><span class="pre"
style="box-sizing: border-box;">ValidationError</span></code></a>.</li>
<li style="box-sizing: border-box; list-style: disc; margin-left:
24px;">Added handling of self-referential structures to<span> </span><a
class="reference internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.compare"
title="testfixtures.compare" style="box-sizing: border-box;
color: rgb(155, 89, 182); text-decoration: none; cursor:
pointer;"><code class="xref py py-func docutils literal"
style="box-sizing: border-box; font-family: Consolas,
"Andale Mono WT", "Andale Mono",
"Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px;
color: rgb(64, 64, 64); overflow-x: auto; font-weight:
bold;"><span class="pre" style="box-sizing: border-box;">compare()</span></code></a><span> </span>by
treating all but the first occurence as equal. Another change
needed to support Django’s insane<span> </span><a
class="reference external"
href="http://django.readthedocs.io/en/latest/ref/exceptions.html#django.core.exceptions.ValidationError"
title="(in Django v2.1)" style="box-sizing: border-box; color:
rgb(155, 89, 182); text-decoration: none; cursor: pointer;"><code
class="xref py py-class docutils literal" style="box-sizing:
border-box; font-family: Consolas, "Andale Mono
WT", "Andale Mono", "Lucida
Console", "Lucida Sans Typewriter",
"DejaVu Sans Mono", "Bitstream Vera Sans
Mono", "Liberation Mono", "Nimbus Mono
L", Monaco, "Courier New", Courier,
monospace; font-size: 12px; white-space: nowrap; max-width:
100%; background: rgb(255, 255, 255); border: 1px solid
rgb(225, 228, 229); padding: 2px 5px; color: rgb(64, 64,
64); overflow-x: auto; font-weight: bold;"><span class="pre"
style="box-sizing: border-box;">ValidationError</span></code></a>.</li>
</ul>
<p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px
24px; font-size: 16px; color: rgb(64, 64, 64); font-family: Lato,
proxima-nova, "Helvetica Neue", Arial, sans-serif;
font-style: normal; font-variant-ligatures: normal;
font-variant-caps: normal; font-weight: 400; letter-spacing:
normal; orphans: 2; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: 2;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(252, 252, 252); text-decoration-style:
initial; text-decoration-color: initial;">Thanks to Hamish Downer
and Tim Davies for their work on<span> </span><a class="reference
internal"
href="http://testfixtures.readthedocs.io/en/latest/api.html#testfixtures.popen.MockPopen"
title="testfixtures.popen.MockPopen" style="box-sizing:
border-box; color: rgb(155, 89, 182); text-decoration: none;
cursor: pointer;"><code class="xref py py-class docutils
literal" style="box-sizing: border-box; font-family: Consolas,
"Andale Mono WT", "Andale Mono",
"Lucida Console", "Lucida Sans
Typewriter", "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Liberation
Mono", "Nimbus Mono L", Monaco, "Courier
New", Courier, monospace; font-size: 12px; white-space:
nowrap; max-width: 100%; background: rgb(255, 255, 255);
border: 1px solid rgb(225, 228, 229); padding: 2px 5px; color:
rgb(64, 64, 64); overflow-x: auto; font-weight: bold;"><span
class="pre" style="box-sizing: border-box;">MockPopen</span></code></a>.</p>
<p style="box-sizing: border-box; line-height: 24px; margin: 0px 0px
24px; font-size: 16px; color: rgb(64, 64, 64); font-family: Lato,
proxima-nova, "Helvetica Neue", Arial, sans-serif;
font-style: normal; font-variant-ligatures: normal;
font-variant-caps: normal; font-weight: 400; letter-spacing:
normal; orphans: 2; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: 2;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(252, 252, 252); text-decoration-style:
initial; text-decoration-color: initial;">Thanks to Wim Glenn and
Daniel Fortunov for their help reviewing some of the more major
changes.</p>
<ul class="simple" style="color: rgb(0, 0, 0); font-family:
sans-serif; font-size: 16px; font-style: normal;
font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); text-decoration-style: initial; text-decoration-color:
initial;">
</ul>
The package is on PyPI and a full list of all the links to docs,
issue trackers and the like can be found here: <br>
<br>
<a class="moz-txt-link-freetext"
href="https://github.com/Simplistix/testfixtures">https://github.com/Simplistix/testfixtures</a>
<br>
<br>
Any questions, please do ask on the Testing in Python list or on the
Simplistix open source mailing list... <br>
<br>
cheers, <br>
<br>
Chris
</body>
</html>