Peter wrote:
Hi
I have a script like this:

def doit(input, output):
 parser = OptionParser()
 parser.add_option("-a", "--accounts", dest="accounts", default="all",
                   help="list available accounts")
...

 (options, args) = parser.parse_args()


# main driver
if __name__ == "__main__":
 import sys
 doit(sys.stdin, sys.stdout)

that I would like to test like this:

   def test_accounts(self):
     input = """-aRoot"""         output = """Results"""
     self.runtest(input, output)
       def runtest(self, input, expected):
     inputStream = cStringIO.StringIO(input)
     actual = cStringIO.StringIO()
     doit(inputStream, actual)
     assert_equal(actual.getvalue(), expected)

But when running test_accounts, I get:
...
File "/usr/local/python2.6/lib/python2.6/optparse.py", line 1578, in error
   self.exit(2, "%s: error: %s\n" % (self.get_prog_name(), msg))
File "/usr/local/python2.6/lib/python2.6/optparse.py", line 1568, in exit
   sys.exit(status)
SystemExit: 2
-------------------- >> begin captured stdout << ---------------------
stdin <cStringIO.StringI object at 0x8bd5b30>

optparse expects a file object and gets a cStringIO.

What is the correct way to set up this ?
Thanks for your help.

Peter

It seems there is something wrong with the type of the paramaters given to the doit function. We can't say more cause cause you remove the related code of the doit function.

But the error seems pretty clear to me : "optparse expects a file object and gets a cStringIO"

JM
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to