P
Peter
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
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