[TIP] argv with unitest

Mag Gam magawake at gmail.com
Sun Sep 6 16:45:36 PDT 2009


Thankyou. I will look into these slides.


On Sun, Sep 6, 2009 at 12:59 PM, Matt Harrison<matthewharrison at gmail.com> wrote:
> On Sun, Sep 6, 2009 at 6:53 AM, Mag Gam<magawake at gmail.com> wrote:
>> I have tried using the
>> http://www.artima.com/weblogs/viewpost.jsp?thread=4829 for a reference
>> but I am still having problems,
>>
>> I think I should take couple of steps back....and write some
>> pseudocode for a good testing framework template.
>>
>> Foo.pl -- The purpose is to to count from 1 to 100
>>
>> Arguments
>>
>> --help -h
>> --stdout -s
>> --stderr -e
>>
>> Should raise an exception if a wrong argument was given and run a
>> Usage() function
>>
>> I would invoke it like this:
>>
>> python Foo.pl --stdout outfile --stderr errorfile
>>
>> My tests would be like this:
>> If stdout is set, will it create a file of stdout?
>>
>> If --help or -h is set the Usage() call should be called and return an
>> error code 1
>>
>> If --help and --stdout is set --help should over ride and still return
>> an error code 1
>>
>> How can I incorporate this to a good testing framework?
>>
>>
>
> I would advocate non calling sys.exit from the main function.  Only
> call if from here
>
> if __name__ == '__main__':
>    sys.exit(main(sys.argv))
>
> Then have main return the exit code you want.
>
> As far as testing a doctest would look something like this:
>
>>>> main(['--stdout', 'outfile'])
>>>> print open('outfile').read()
> 0
> 1
> 2
> ....
>
> A unittest would look similar
>
> import unittest
> class TestCount(unittest.TestCase):
>  def test_count(self):
>    main(['--stdout', 'outfile'])
>    results = open('outfile').read()
>    self.assertEqual(results, '0\n1\n2\n....)
>
> if __name__=='__main__':
>   unittest.main()
>
>
> I gave a talk about best practices for writing scripts which includes
> testing examples.  Newer slides are here[0] video is here[1].
>
> good luck,
>
> -matt
>
> 0 - http://panela.blog-city.com/oscon_scripting_with_python_handout.htm
> 1 - http://us.pycon.org/2009/conference/schedule/event/61/
>



More information about the testing-in-python mailing list