<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>
      &nbsp;&nbsp;&nbsp; local = kwargs.get('local', os.getcwd())<br>
      &nbsp;&nbsp;&nbsp; filename = args[0]<br>
      &nbsp;&nbsp;&nbsp; f_path = os.path.join(local, filename)<br>
      &nbsp;&nbsp;&nbsp; with open(f_path, 'r') as f:<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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.&nbsp;&nbsp; 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.&nbsp; You're over-testing
    the implementation of the function.&nbsp; 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.&nbsp; 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>