<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Ah, I see. But then the successful tests are also relying on the
getpreferredlocale() value, or you are specifying explicit encodings
in the tests? I would still avoid mocking here.<br>
<br>
--Ned.<br>
<br>
<div class="moz-cite-prefix">On 8/29/2012 10:31 AM, Alexander
O'Donovan-Jones wrote:<br>
</div>
<blockquote
cite="mid:98D0F3AAB54DF646B187C3D80D0CCFE406ED516D@RKV-IT-EXCH103.ccp.ad.local"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta name="Generator" content="Microsoft Word 14 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Segoe UI","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Segoe
UI","sans-serif";color:#1F497D">Twofold:
first is to get an understanding of mocking complex things
such as __builtin__ methods/classes/objects.
<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Segoe
UI","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Segoe
UI","sans-serif";color:#1F497D">Secondly, the
example I gave is contrived. The actual use of this code
relies upon a return from locale.getpreferredlocale() to
determine the desired encoding to use. If I specify ‘cp1252’
on computer A, with a Russian installation of Windows and it
throws the UnicodeDecodeError then the test passes. However
if I run it on computer B, with a different character set as
default and the UnicodeDecodeError isn’t thrown, then my
test fails, due to differences in the operating system,
outside of my control.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Segoe
UI","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Segoe
UI","sans-serif";color:#1F497D">I want to
control the execution of the function to ensure that the
return after encountering the exception is correct and not
leave it to a variable in the operating system to
arbitrarily decide whether or not the test should pass.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Segoe
UI","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">From:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">
Ned Batchelder [<a class="moz-txt-link-freetext" href="mailto:ned@nedbatchelder.com">mailto:ned@nedbatchelder.com</a>]
<br>
<b>Sent:</b> Wednesday, 29 August, 2012 2:14 PM<br>
<b>To:</b> Alexander O'Donovan-Jones<br>
<b>Cc:</b> <a class="moz-txt-link-abbreviated" href="mailto:testing-in-python@lists.idyll.org">testing-in-python@lists.idyll.org</a><br>
<b>Subject:</b> Re: [TIP] Mocking the .decode(...)
method on a string<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 8/29/2012 10:02 AM, Alexander
O'Donovan-Jones wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
style="font-size:10.0pt">Creating a mock object that
raises the exceptions required is exactly the route I’m
taking now.
</span><o:p></o:p></p>
</blockquote>
<p class="MsoNormal">Yes, I can see that, but it's causing you
trouble, and you can instead simply use two arguments to the
function that will raise the exception, no? I'm not sure why
mocking is the better approach here.<br>
<br>
--Ned.<o:p></o:p></p>
</div>
</blockquote>
<br>
</body>
</html>