<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
On 7/18/2012 12:58 AM, John Wong wrote:<br>
<blockquote
cite="mid:CACCLA54TUhzChv8H_5orgUzrQfdSiDeG4DKtY1UPM3g43-Faxg@mail.gmail.com"
type="cite">Hi guys,<br>
<br>
Here is a simple function.<br>
<br>
def readfile(*args, **kwargs):<br>
local = kwargs.get('local', os.getcwd())<br>
filename = args[0]<br>
f_path = os.path.join(local, filename)<br>
with open(f_path, 'r') as f:<br>
return f.read()<br>
<br>
<br>
Now here is just ONE case of the readfile test code. For
readabilty, I will put in <a moz-do-not-send="true"
href="http://pastebin.com">pastebin.com</a><br>
<a moz-do-not-send="true" href="http://pastebin.com/P45uc2TV">http://pastebin.com/P45uc2TV</a><br>
<br>
I am verifying how many times X Y C dependencies are called and
what parameters are passed to them. I think these are necessary to
check (what if one of the dependency functions called with the
wrong variable).<br>
<br>
</blockquote>
You definitely don't have to mock os.path.join. You don't care
that it called that function, you care that it opened the right
path, and you already have a check for that. You're over-testing
the implementation of the function. Focus on the
externally-observable behavior.<br>
<br>
If you are checking call_args_list, then .called or .call_count is
redundant, so remove those lines from the test.<br>
<br>
BTW: the function itself is a bit odd. Why use **kwargs if you only
use one keyword, and *args if you only use the first element?<br>
<br>
--Ned.<br>
<br>
<blockquote
cite="mid:CACCLA54TUhzChv8H_5orgUzrQfdSiDeG4DKtY1UPM3g43-Faxg@mail.gmail.com"
type="cite">
But is this really the nature of unittest? I've read many tests
code and they all seen to be 5-20 lines..... I faint when I am
reading my test code.............. SIGH<br>
<br>
I have some 10 lines function and it took 50 lines to test! Let
alone for each of these functions, I need to write a a few tests
for each branch case...<br>
So if there are 10 functions, each 5 lines, I can end up with 1000
lines of test code....<br>
<br>
Last question, I find my patching is really really long and
inconvince. How should I patch (say they all come from os
package)?<br>
<br>
Thanks.<br>
John<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
testing-in-python mailing list
<a class="moz-txt-link-abbreviated" href="mailto:testing-in-python@lists.idyll.org">testing-in-python@lists.idyll.org</a>
<a class="moz-txt-link-freetext" href="http://lists.idyll.org/listinfo/testing-in-python">http://lists.idyll.org/listinfo/testing-in-python</a>
</pre>
</blockquote>
<br>
<br>
</body>
</html>