How to test that an exception is raised ?
StepH
stephane.bronsart at bea.be
Fri Jan 28 05:02:38 EST 2005
Hi,
I've this module :
from optparse import OptionParser
import re
_version = "P1"
def writeVar(f, line):
"""Output a line in .xml format in the file f."""
f.write('\t<Var>\n')
name = line.split()[0]
adr = line.split()[3]
f.write('\t\t<Name>' + name + '</Name>\n')
f.write('\t\t<Adr>' + adr + '</Adr>\n')
f.write('\t</Var>\n')
def mps2xml(mps,verbose):
"""Convert '.mps' to '.xml'."""
try:
f = open(mps)
f.close()
xmlfile = mps + ".xml"
f = open(xmlfile, "w+")
f.write('<?xml version="1.0" ?>\n')
f.writelines('<List>\n')
pat = re.compile(".*Var.*g.*0x00.*")
lines = list(open(mps))
nbScan = nbFound = 0
for line in lines:
nbScan = nbScan + 1
if pat.match(line):
writeVar(f, line)
nbFound = nbFound + 1
f.writelines('</List>\n')
f.close()
if verbose:
print "Output to file %s..." % xmlfile
print "Lines scanned:", nbScan
print "Lines found:", nbFound
except:
if verbose:
print "FileError"
if __name__ == "__main__":
usage = "usage: %prog [options] filename"
parser = OptionParser(usage)
parser.add_option("-v", "--verbose", action="store_true",
dest="verbose")
parser.add_option("-q", "--quiet", action="store_false", dest="verbose")
(options, args) = parser.parse_args()
if len(args) != 1:
parser.error("incorrect number of arguments")
exit(1)
if options.verbose:
print "mps2xml -", _version
mps2xml(args[0],options.verbose)
And this "unittest" module :
import mps2xml
import os
import unittest
class Tests(unittest.TestCase):
def setUp(self):
self.mps = "test.mps"
def tearDown(self):
pass
def test_badFile(self):
"""Check that an exception is raised if a bad filename is passed to
mps2xml"""
self.assertRaises((IOError),mps2xml.mps2xml, "thisfiledoesntexists",
False)
def test_writeVar_Output(self):
"""Check the output of the 'writeVar' method"""
line = " irM1slotnoisePPtmp Var. g 0x0002F6"
file = open("testWriteVar.xml","w+")
mps2xml.writeVar(file, line)
file.close()
outputlines = list(open("testWriteVar.xml"))
goodlines = list(open("testWriteVar.xml.good"))
self.assertEquals(outputlines, goodlines, 'bad output format')
def test_mps2xml_Creation(self):
"""Check if test.mps.xml is created"""
mps2xml.mps2xml(self.mps, False)
self.assert_(os.path.exists(self.mps + ".xml"), 'test.mps.xml not
created')
if __name__ == '__main__':
unittest.main()
But i've prob with the 1st test : test_badFile.
When I run the test, unittest say that no error is Raised.
But when I run the mps2xml module with a bad file as arg., the exception is
well Raised.
What i'm doing wrong ?
It is because the exception in catched in the mps2xml module ?
Thanks for your helps.
StepH.
More information about the Python-list
mailing list