def doSheet(self, excelAPP, sheetName):
     Log.debug('start: ExcelColumnFixture.doSheet')
     sheet = self.excelAPP.getShByName(sheetName)
     self.excelAPP.setSheet(sheet)
     ncols = sheet.ncols
     nrows = sheet.nrows
     try:
         fixturePath, rowpos = self.getFixturePath(0, ncols)
         if fixturePath == '':  # if have not fixture row, use default fixture
             print 'warning:'
             print 'no specify fixture path or fixture in the first row in excel'
             print 'automation will use default fixture, apifixture.TempleteFixture'
             Log.debug('automation use default fixture, apifixture.TempleteFixture')
             fixturePath = 'apifixture.TempleteFixture'
             #sys.exit(0)
             #fixturePath = 'apifixture.TempleteFixture'
         _CLASSNAME = fixturePath.split('.')[-1]
         i = fixturePath.split('$')
         if len(i) == 1:
             exec 'import ' + fixturePath
             # test class method
             exec 'fixture = ' + fixturePath + '.' + _CLASSNAME + '()' 
         else:
             exec "import %s" % (i[0],)
             exec "fixture = %s.%s()" % (i[0], i[1])
     except ImportError, e:
         Log.exception(e)
         print 'fixturePath does not exists'
         print 'system exit'
         return
 def bind (self, heads, expandColumnsTag = None):
     self.columnBindings = [None] * heads.size()
     i = 0
     while heads:
         name = heads.text()
         # strip ' ','\n'
         name = name.replace(' ', '')
         name = name.replace('\n','')
         sufix = "()"
         try:
             if name[-len(sufix):] == sufix:
                 self.columnBindings[i] = \
                     self.bindMethod(name[:-len(sufix)])
                 if expandColumnsTag is not None: 
                     setattr(self, 'rowspan', 2) # added  in  2009/08/21, the first row means show test result, second test data      
                     style = heads.getStyle()
                     if style is None:
                         style = ''
                     try:
                         heads.addToBody(self.getExpandheads(style))
                     except AttributeError, e:
                         Log.info('please implement getExpandheads()!')
                         Log.exception(e)
             else: # name is field 
                 self.columnBindings[i] = self.bindField(name)
 def bind(self, heads, expandColumnsTag=None):
     self.columnBindings = [None] * heads.size()
     i = 0
     while heads:
         name = heads.text()
         # strip ' ','\n'
         name = name.replace(' ', '')
         name = name.replace('\n', '')
         sufix = "()"
         try:
             if name[-len(sufix):] == sufix:
                 self.columnBindings[i] = \
                     self.bindMethod(name[:-len(sufix)])
                 if expandColumnsTag is not None:
                     setattr(
                         self, 'rowspan', 2
                     )  # added  in  2009/08/21, the first row means show test result, second test data
                     style = heads.getStyle()
                     if style is None:
                         style = ''
                     try:
                         heads.addToBody(self.getExpandheads(style))
                     except AttributeError, e:
                         Log.info('please implement getExpandheads()!')
                         Log.exception(e)
             else:  # name is field
                 self.columnBindings[i] = self.bindField(name)
Ejemplo n.º 4
0
 def doSheet(self, excelAPP, sheetName):
     Log.debug('start: ExcelColumnFixture.doSheet')
     sheet = self.excelAPP.getShByName(sheetName)
     self.excelAPP.setSheet(sheet)
     ncols = sheet.ncols
     nrows = sheet.nrows
     try:
         fixturePath, rowpos = self.getFixturePath(0, ncols)
         if fixturePath == '':  # if have not fixture row, use default fixture
             print 'warning:'
             print 'no specify fixture path or fixture in the first row in excel'
             print 'automation will use default fixture, apifixture.TempleteFixture'
             Log.debug(
                 'automation use default fixture, apifixture.TempleteFixture'
             )
             fixturePath = 'apifixture.TempleteFixture'
             #sys.exit(0)
             #fixturePath = 'apifixture.TempleteFixture'
         _CLASSNAME = fixturePath.split('.')[-1]
         i = fixturePath.split('$')
         if len(i) == 1:
             exec 'import ' + fixturePath
             # test class method
             exec 'fixture = ' + fixturePath + '.' + _CLASSNAME + '()'
         else:
             exec "import %s" % (i[0], )
             exec "fixture = %s.%s()" % (i[0], i[1])
     except ImportError, e:
         Log.exception(e)
         print 'fixturePath does not exists'
         print 'system exit'
         return
Ejemplo n.º 5
0
 def runTest(self):
     Log.debug('start: DcgFixture.runTest')
     print 'now start to test......'
     starttime = datetime.datetime.now()
     runTime = 0
     try:
         Log.info('iteration count: ' + str(GlobalSetting.ITERATION))
         iterationCount = GlobalSetting.ITERATION
         if type(iterationCount) != types.IntType:
             iterationCount = 0
         while True:       
             path = 'reports\\'
             if not os.path.exists(path):
                 os.mkdir(path)   
             dcg = TextFixture() 
             dcg.doTextTest(self.textfilename, path + self.outreportname)
             endtime = datetime.datetime.now()
             runTime = (endtime - starttime).seconds
             print 'run time(seconds) is: ' + str(runTime)
             try:
                 if GlobalSetting.RUNTIME > 0:
                     if runTime > GlobalSetting.RUNTIME:
                         break
                 elif iterationCount < 1:
                     break
             except BaseException, e:
                 Log.exception(e)
                 break              
             iterationCount -= 1
     except (KeyboardInterrupt, SystemExit), e:
             print 'user Interrupt test'
             Log.exception(e)
             os._exit(0)
Ejemplo n.º 6
0
 def doTables(self,tables, expandColumnsTag = None) :
     self.summary["run date"] = time.ctime(time.time())
     self.summary["run elapsed time"] = RunTime()
     while tables:
         try:
             heading = tables.at(0,0,0)
             if expandColumnsTag is not None:
                 tempTuple = expandColumnsTag.split('=')
                 heading.modifyTagValue(tempTuple[0], tempTuple[1])
         except BaseException, e:
             Log.exception(e)                 
         if heading:
             try:
                 path = heading.text()
                 #path = re.sub(r'^fit\.','',path) #try to cure the fits of madness
                 _CLASSNAME = path.split('.')[-1]
                 # fix for illegal Java trick in AllFiles. Frankly, I like it!
                 i = path.split('$')
                 if len(i) == 1:
                     exec 'import '+path
                     #test class method
                     exec 'fixture = '+path+'.'+_CLASSNAME+'()' 
                 else:
                     exec "import %s" % (i[0],)
                     exec "fixture = %s.%s()" % (i[0], i[1])
                 fixture.counts = self.counts
                 fixture.summary = self.summary
                 fixture.doTable(tables, expandColumnsTag)
             except Exception, e:
                 self.exception(heading, e)
Ejemplo n.º 7
0
 def doTables(self, tables, expandColumnsTag=None):
     self.summary["run date"] = time.ctime(time.time())
     self.summary["run elapsed time"] = RunTime()
     while tables:
         try:
             heading = tables.at(0, 0, 0)
             if expandColumnsTag is not None:
                 tempTuple = expandColumnsTag.split('=')
                 heading.modifyTagValue(tempTuple[0], tempTuple[1])
         except BaseException, e:
             Log.exception(e)
         if heading:
             try:
                 path = heading.text()
                 #path = re.sub(r'^fit\.','',path) #try to cure the fits of madness
                 clas = path.split('.')[-1]
                 # fix for illegal Java trick in AllFiles. Frankly, I like it!
                 i = path.split('$')
                 if len(i) == 1:
                     exec 'import ' + path
                     #test class method
                     exec 'fixture = ' + path + '.' + clas + '()'
                 else:
                     exec "import %s" % (i[0], )
                     exec "fixture = %s.%s()" % (i[0], i[1])
                 fixture.counts = self.counts
                 fixture.summary = self.summary
                 fixture.doTable(tables, expandColumnsTag)
             except Exception, e:
                 self.exception(heading, e)
 def openReport(self):
     Log.debug(self.reportNameList)
     for reportName in self.reportNameList:
         try:
             print reportName
             webbrowser.open_new(reportName)
         except BaseException, e:
             Log.exception(e)
Ejemplo n.º 9
0
 def openReport(self):
     Log.debug(self.reportNameList)
     for reportName in self.reportNameList:
         try:
             print reportName
             webbrowser.open_new(reportName)
         except BaseException, e:
             Log.exception(e)
 def __init__(self, path):
     self.path = path
     print path
     try:
         self.doc = xml.dom.minidom.parse(path)
     except:
         Log.exception('can not create doc document object')
         print 'system exit'
         os._exit(0)
Ejemplo n.º 11
0
 def __init__(self, path):
     self.path = path
     print path
     try:
         self.doc = xml.dom.minidom.parse(path)
     except:
         Log.exception('can not create doc document object')
         print 'system exit'
         os._exit(0)
Ejemplo n.º 12
0
 def removeChildsOfNode(self, node):
     try:
         if node != None:
             nl = node._get_childNodes()
             for n in nl:
                 if n.nodeType == xml.dom.Node.ELEMENT_NODE:
                     node.removeChild(n)
             Log.debug('have successfully removed element')
     except BaseException, e:
         Log.exception(e)
Ejemplo n.º 13
0
 def getStyle(self):
     result = ''
     try:
         place1 = self.tag.find('style')
         if place1 > -1:
             place2 = self.tag.find("'", place1 + 7) # get last "'" of the tag. style = '...'
             if place2 > -1:
                 result = self.tag[place1:place2 + 1]
     except BaseException, e:
         Log.exception(e)
 def removeChildsOfNode(self, node):
     try:
         if node != None:
             nl = node._get_childNodes()
             for n in nl:
                 if n.nodeType == xml.dom.Node.ELEMENT_NODE:
                     node.removeChild(n)
             Log.debug('have successfully removed element')
     except BaseException, e:
         Log.exception(e)
Ejemplo n.º 15
0
 def getStyle(self):
     result = ''
     try:
         place1 = self.tag.find('style')
         if place1 > -1:
             place2 = self.tag.find(
                 "'", place1 + 7)  # get last "'" of the tag. style = '...'
             if place2 > -1:
                 result = self.tag[place1:place2 + 1]
     except BaseException, e:
         Log.exception(e)
Ejemplo n.º 16
0
 def removeTextNodesByNodename(self, nodeName):
     try:
         elementList = self.getElementList(nodeName)
         for element in elementList:
             if element.nodeType == xml.dom.Node.TEXT_NODE:
                 self.doc.removeChild(element)
                 continue
             else:
                 el = element._get_childNodes()
                 for e in el:
                     if e.nodeType == xml.dom.Node.TEXT_NODE:
                         element.removeChild(e)
     except BaseException, e:
         Log.exception(e)
 def removeTextNodesByNodename(self, nodeName):
     try:
         elementList = self.getElementList(nodeName)
         for element in elementList:
             if element.nodeType == xml.dom.Node.TEXT_NODE:
                 self.doc.removeChild(element)
                 continue
             else:
                 el = element._get_childNodes()
                 for e in el:
                     if e.nodeType == xml.dom.Node.TEXT_NODE:
                         element.removeChild(e)
     except BaseException, e:
         Log.exception(e)
Ejemplo n.º 18
0
 def doRows(self, rowpos, nrows, ncols):
     Log.debug('start: ExcelColumnFixture.doRows')
     self.title, rowpos = self.getTitle(rowpos, ncols)
     rowpos = self.processHeads(rowpos, ncols)
     #setup before test
     if hasattr(self, 'initSetupFixture') and self.initSetupFixture:
         self.runInitSetupFixture()
     self.repstr = self.getReportHeader(self.curShName, needscrips=True)
     self.failrepstr = self.getReportHeader(self.curShName, needscrips=True)
     self.repstr += self.getReportTableHeader()
     self.failrepstr += self.getReportTableHeader()
     try:
         startcolumnPos = 0
         heads, rowpos = self.getHeads(rowpos, startcolumnPos, ncols)
         self.heads = self.stripHeads(heads)  # strip space , '\n'
         self.colspan = len(self.heads)
         self.repstr += self.getReportTitle(self.title)
         self.failrepstr += self.getReportTitle(self.title)
         #self.processReportHeads()
         if self.note:
             self.repstr += self.getReporth2header(self.note, 'H4')
         if self.interface and self.function:
             self.repstr += self.getReporth2header(
                 self.interface + self.function, 'H3')
             self.failrepstr += self.getReporth2header(
                 self.interface + self.function, 'H3')
         self.repstr += self.getReportTableColumnName(self.heads)
         self.failrepstr += self.getReportTableColumnName(self.heads)
         self.defineVarAndTypeDict(self.heads)  # redefine variable type
         #             if hasattr(self, 'testCaseId') == False:
         #                 exec 'ExcelColumnFixture.testCaseId = 0'
         Log.debug('heads:', heads)
         self.bind(self.heads)
         row = rowpos
         while row < nrows:
             self.restInitVar()
             rowdata, row = self.doCells(row, startcolumnPos, ncols, nrows)
             self.repstr += self.getReportTableRow(rowdata)
             if self.results[self.testCaseId] == 'fail':
                 self.failrepstr += self.getReportTableRow(rowdata)
         self.repstr += self.getReportTableTail()
         self.failrepstr += self.getReportTableTail()
         if self.isMakeReporterFlag:
             self.repstr += self.getReportTail(self.counts.toString())
             self.failrepstr += self.getReportTail()
             self.genHtmlfile(self.failrepstr, self.failReportFileName)
             self.genHtmlfile(self.repstr, self.reportFileName)
         self.saveCounts()
     except BaseException, e:
         Log.exception(e)
Ejemplo n.º 19
0
 def runTest(self):
     Log.debug('start: HtmlRunner.runTest')
     tags = ("html", "table", "tr", "td")
     print 'now start to test......'
     starttime = datetime.datetime.now()
     runTime = 0
     try:
         Log.info('iteration count: ' + str(GlobalSetting.ITERATION))
         iterationCount = GlobalSetting.ITERATION
         if type(iterationCount) != types.IntType:
             iterationCount = 0
         count = 0
         while True:
             self.tables = Parse(self.input,
                                 tags)  # look for html tag enclosing tables
             self.fixture.doTables(self.tables.parts, self.expandColumnsTag)
             self.output.write(str(self.tables))
             self.output.flush()
             self.output.close()
             endtime = datetime.datetime.now()
             runTime = (endtime - starttime).seconds
             #===============================================================================
             #                if runTime < 10:
             #                    print 'run time is less than 10 second, maybe run STAT occur error,system exit'
             #===============================================================================
             print 'run time(seconds) is: ' + str(runTime)
             try:
                 if GlobalSetting.RUNTIME > 0:
                     if runTime > GlobalSetting.RUNTIME:
                         break
                 elif iterationCount < 1:
                     break
             except BaseException, e:
                 Log.exception(e)
                 break
             iterationCount -= 1
             if GlobalSetting.NEEDREPORTS:
                 temp = self.outreportname.split('.')[-2]  # get file path
                 pathTuple = temp.split('\\')  #split file name, path
                 count += 1
                 if os.path.exists('reports\\') is not True:
                     os.mkdir('reports\\')
                 report = 'reports\\' + pathTuple[-1] + '(' + str(
                     count) + ')' + '.html'
                 self.output = open(report, 'w')
     except (KeyboardInterrupt, SystemExit), e:
         print 'user Interrupt test'
         Log.exception(e)
         os._exit(0)
    def doRows(self, rowpos, nrows, ncols):
        Log.debug('start: ExcelColumnFixture.doRows')
        self.title, rowpos = self.getTitle(rowpos, ncols)
        rowpos = self.processHeads(rowpos, ncols)
        #setup before test
        if hasattr(self, 'initSetupFixture') and self.initSetupFixture:
            self.runInitSetupFixture()
        self.repstr = self.getReportHeader(self.curShName, needscrips=True)
        self.failrepstr = self.getReportHeader(self.curShName, needscrips=True)
        self.repstr += self.getReportTableHeader()
        self.failrepstr += self.getReportTableHeader()
        try:
            startcolumnPos = 0
            heads, rowpos = self.getHeads(rowpos, startcolumnPos, ncols)
            self.heads = self.stripHeads(heads)  # strip space , '\n'
            self.colspan = len(self.heads)
            self.repstr += self.getReportTitle(self.title)
            self.failrepstr += self.getReportTitle(self.title)
            #self.processReportHeads()
            if self.note:
                self.repstr += self.getReporth2header(self.note, 'H4')
            if self.interface and self.function:
                self.repstr += self.getReporth2header(self.interface + self.function, 'H3')
                self.failrepstr += self.getReporth2header(self.interface + self.function, 'H3')
            self.repstr += self.getReportTableColumnName(self.heads)
            self.failrepstr += self.getReportTableColumnName(self.heads)
            self.defineVarAndTypeDict(self.heads)  # redefine variable type
#             if hasattr(self, 'testCaseId') == False:
#                 exec 'ExcelColumnFixture.testCaseId = 0'
            Log.debug('heads:', heads)
            self.bind(self.heads)
            row = rowpos
            while row < nrows:
                self.restInitVar()
                rowdata, row = self.doCells(row, startcolumnPos, ncols, nrows)
                self.repstr += self.getReportTableRow(rowdata)
                if self.results[self.testCaseId] == 'fail' :
                    self.failrepstr += self.getReportTableRow(rowdata)
            self.repstr += self.getReportTableTail()
            self.failrepstr += self.getReportTableTail()
            if self.isMakeReporterFlag:
                self.repstr += self.getReportTail(self.counts.toString())
                self.failrepstr += self.getReportTail()
                self.genHtmlfile(self.failrepstr, self.failReportFileName)
                self.genHtmlfile(self.repstr, self.reportFileName)
            self.saveCounts()
        except BaseException, e:
            Log.exception(e)
Ejemplo n.º 21
0
 def doTextTest(self, textFileName, reportname):
     self.textFileName = textFileName
     self.reportname = reportname
     file_object = open(self.textFileName, 'r')
     try:
         fixturePath = str(file_object.readline())
         fixturePath = self.strip(fixturePath)
         self.urlpath = self.strip(file_object.readline())
         if self.urlpath.find('url:') > -1:
             self.urlpath = self.urlpath.split(':')[-1]
             self.readedLines += 1
         else:
             self.urlpath = ''
         print fixturePath
         if fixturePath.find(
                 'fixture'
         ) == -1:  # if have not fixture row, use default fixture
             fixturePath = 'fixture.TextFixture'
         else:
             self.readedLines += 1
         clas = fixturePath.split('.')[-1]
         # fix for illegal Java trick in AllFiles. Frankly, I like it!
         i = fixturePath.split('$')
         try:
             if len(i) == 1:
                 exec 'import ' + fixturePath
                 #                     # test class method
                 exec 'fixture = ' + fixturePath + '.' + clas + '()'
             else:
                 exec "import %s" % (i[0], )
                 exec "fixture = %s.%s()" % (i[0], i[1])
         except ImportError, e:
             Log.exception(e)
             print 'fixturePath does not exists'
             print 'system exit'
             return
         fixture.fixturePath = fixturePath
         fixture.textFileName = self.textFileName
         fixture.reportname = self.reportname
         fixture.readedLines = self.readedLines
         fixture.urlpath = self.urlpath
         fixture.runTest()
Ejemplo n.º 22
0
    def doTextTest(self, textFileName, reportname):
        self.textFileName = textFileName
        self.reportname = reportname
        file_object = open(self.textFileName, 'r')
        try:
            fixturePath = str(file_object.readline())
            fixturePath = self.strip(fixturePath)
            self.urlpath = self.strip(file_object.readline())
            if self.urlpath.find('url:') > -1:
                self.urlpath = self.urlpath.split(':')[-1]
                self.readedLines += 1
            else:
                self.urlpath = ''
            print fixturePath
            if fixturePath.find('fixture') == -1:  # if have not fixture row, use default fixture
                fixturePath = 'fixture.TextFixture'
            else:
                self.readedLines += 1
            _CLASSNAME = fixturePath.split('.')[-1]
            # fix for illegal Java trick in AllFiles. Frankly, I like it!
            i = fixturePath.split('$')
            try:
                if len(i) == 1:
                    exec 'import ' + fixturePath
#                     # test class method
                    exec 'fixture = ' + fixturePath + '.' + _CLASSNAME + '()' 
                else:
                    exec "import %s" % (i[0],)
                    exec "fixture = %s.%s()" % (i[0], i[1])
            except ImportError, e:
                Log.exception(e)
                print 'fixturePath does not exists'
                print 'system exit'
                return
            fixture.fixturePath = fixturePath
            fixture.textFileName = self.textFileName
            fixture.reportname = self.reportname
            fixture.readedLines = self.readedLines
            fixture.urlpath = self.urlpath
            fixture.runTest()
Ejemplo n.º 23
0
class TextRunner():
    
    '''
    run all test cases of html tables
    support stress test
    '''
    textfilename = ''
    outreportname = ''
    
    def __init__(self, argv):
        # output-file argv not exists,deafault name :Year-m-d-h-m-sreport.html
        if len(argv) < 2:
            sys.stderr.write("usage: python input-file output-file\n")
            sys.exit(-1)
        # output-file argv not exists,deafault name :Year-m-d-h-m-sreport.html
        if len(argv) == 2:
            self.outreportname = time.strftime('%Y-%m-%d-%H-%M-%S') + 'report.html'
        elif(len(argv) > 2):
            self.outreportname = argv[2]
            
        self.textfilename = argv[1]
    
    def __call__(self):
        self.setUp()
        self.runTest()
        self.tearDown()
        print 'the test report name is: %s, please review' % (self.outreportname)
        try:
            #if have not iteration, open report by automatic
            if GlobalSetting.ITERATION == 0 and GlobalSetting.RUNTIME == 0:
#                 webbrowser.open_new(self.outreportname)   # open test report
                pass
        except:
            pass
        self.exit()
        print 'call over' 
    
    def runTest(self):
        Log.debug('start: DcgFixture.runTest')
        print 'now start to test......'
        starttime = datetime.datetime.now()
        runTime = 0
        try:
            Log.info('iteration count: ' + str(GlobalSetting.ITERATION))
            iterationCount = GlobalSetting.ITERATION
            if type(iterationCount) != types.IntType:
                iterationCount = 0
            while True:       
                path = 'reports\\'
                if not os.path.exists(path):
                    os.mkdir(path)   
                dcg = TextFixture() 
                dcg.doTextTest(self.textfilename, path + self.outreportname)
                endtime = datetime.datetime.now()
                runTime = (endtime - starttime).seconds
                print 'run time(seconds) is: ' + str(runTime)
                try:
                    if GlobalSetting.RUNTIME > 0:
                        if runTime > GlobalSetting.RUNTIME:
                            break
                    elif iterationCount < 1:
                        break
                except BaseException, e:
                    Log.exception(e)
                    break              
                iterationCount -= 1
        except (KeyboardInterrupt, SystemExit), e:
                print 'user Interrupt test'
                Log.exception(e)
                os._exit(0)
        except BaseException, e:
            print e
            Log.exception(e)
            os._exit(0)
Ejemplo n.º 24
0
class HtmlRunner():
    '''
    run all test cases of html tables
    support stress test
    '''

    input = None
    tables = None
    fixture = Fixture()
    output = None
    outfile = None
    expandColumnsTag = None  #expand html table column, like 'colspan=23'
    outreportname = None

    def __init__(self, argv):
        # output-file argv not exists,deafault name :Year-m-d-h-m-sreport.html
        if len(argv) < 2:
            sys.stderr.write("usage: python input-file output-file\n")
            sys.exit(-1)
        # output-file argv not exists,deafault name :Year-m-d-h-m-sreport.html
        if len(argv) == 2:
            self.outreportname = 'reports\\' + time.strftime(
                '%Y-%m-%d-%H-%M-%S') + 'report.html'
            argv.append(self.outreportname)
        elif (len(argv) > 2):
            self.outreportname = argv[2]
        infile = open(argv[1], 'r')
        modtime = time.ctime(os.fstat(infile.fileno())[stat.ST_MTIME])
        self.outfile = open(argv[2], 'w')
        self.fixture.summary["input file"] = os.path.abspath(argv[1])
        self.fixture.summary["input update"] = modtime
        self.fixture.summary["output file"] = os.path.abspath(argv[2])
        self.input = infile.read()
        infile.close()
        self.output = self.outfile

    def __call__(self):
        self.setUp()
        self.runTest()
        self.tearDown()
        print 'the test report name is: %s, please review' % (
            self.outreportname)
        try:
            #if have not iteration, open report by automatic
            if GlobalSetting.ITERATION == 0 and GlobalSetting.RUNTIME == 0:
                webbrowser.open_new(self.outreportname)  # open test report
                #pass
        except:
            pass
        self.exit()
        print 'call over'

    def runTest(self):
        Log.debug('start: HtmlRunner.runTest')
        tags = ("html", "table", "tr", "td")
        print 'now start to test......'
        starttime = datetime.datetime.now()
        runTime = 0
        try:
            Log.info('iteration count: ' + str(GlobalSetting.ITERATION))
            iterationCount = GlobalSetting.ITERATION
            if type(iterationCount) != types.IntType:
                iterationCount = 0
            count = 0
            while True:
                self.tables = Parse(self.input,
                                    tags)  # look for html tag enclosing tables
                self.fixture.doTables(self.tables.parts, self.expandColumnsTag)
                self.output.write(str(self.tables))
                self.output.flush()
                self.output.close()
                endtime = datetime.datetime.now()
                runTime = (endtime - starttime).seconds
                #===============================================================================
                #                if runTime < 10:
                #                    print 'run time is less than 10 second, maybe run STAT occur error,system exit'
                #===============================================================================
                print 'run time(seconds) is: ' + str(runTime)
                try:
                    if GlobalSetting.RUNTIME > 0:
                        if runTime > GlobalSetting.RUNTIME:
                            break
                    elif iterationCount < 1:
                        break
                except BaseException, e:
                    Log.exception(e)
                    break
                iterationCount -= 1
                if GlobalSetting.NEEDREPORTS:
                    temp = self.outreportname.split('.')[-2]  # get file path
                    pathTuple = temp.split('\\')  #split file name, path
                    count += 1
                    if os.path.exists('reports\\') is not True:
                        os.mkdir('reports\\')
                    report = 'reports\\' + pathTuple[-1] + '(' + str(
                        count) + ')' + '.html'
                    self.output = open(report, 'w')
        except (KeyboardInterrupt, SystemExit), e:
            print 'user Interrupt test'
            Log.exception(e)
            os._exit(0)
        except BaseException, e:
            self.exception(e)
            Log.exception(e)
            os._exit(0)
             else:
                 bresult = 0
                 message = "expect result column is null, maybe error!\n the url:%s \n" % self.url
         if bresult > 0:
             self.right(cell, message)
         elif bresult == 0:
             self.wrong(cell, message)
         else:
             self.output(cell, message)
         try:
             cell.text = cell.text + self.link
         except:
             cell.text = self.link
     except BaseException, e:
         self.exception(cell, e)
         Log.exception(e)
     Log.debug('end runTest: ' + self._CLASSNAME)
 
 def doRequest(self, url, reqargs, requestMethod):
     respData = None
     #开始HTTP请求
     try:
         resp = self.client.dorequest(url, reqargs, \
                                      methodname=requestMethod)
         if self.url.find('login') > -1: #如果是一个登陆的url
             self.initInfoBeforeTest['cookie'] = self.client.getCookie(resp.info())
         if isinstance(resp, str):
             respData = resp
         else:
             respData = resp.read()
         Log.debugvar('respData is ', respData)