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