Beispiel #1
0
 def runTest(self):
     Log.debug('start: ExcelTestDriver.runTest')
     fixture = None
     starttime = datetime.datetime.now()
     runTime = 0
     iterationCount = GlobalSetting.ITERATION
     if type(iterationCount) != types.IntType:
         iterationCount = 0
     count = 0
     while True:
         count += 1
         fixture = ExcelColumnFixture()
         excelAPP = util.excel.ExcelAppRD()
         excelAPP.openExcel(self.infilename)
         print 'now start to test......'
         reportFileName = 'report'
         if count > 1:
             reportFileName = 'report' + str(count)
         fixture.dosheets(excelAPP, reportFileName)
         endtime = datetime.datetime.now()
         runTime = (endtime - starttime).seconds
         print 'run time(seconds) is: ' + str(runTime)
         #Log.debug('open report ' + str(fixture.reportNameList))
         fixture.openFileReport()
         if GlobalSetting.RUNTIME > 0:
             if runTime > GlobalSetting.RUNTIME:
                 break
         elif iterationCount < 1:
             break
         iterationCount -= 1
     Log.debug('end: ExcelTestDriver.runTest')
def strToJson(data):
    try:
        datajson = json.loads(data)
    except BaseException, e:
        Log.debug("strToJson", e)
        print e
        datajson = {}
 def dosheets(self, excelAPP, reportFileName):
     Log.debug('start: ExcelColumnFixture.dosheets')
     self.excelAPP = excelAPP
     self.reportFileName = reportFileName
     self.summary["run date"] = time.ctime(time.time())
     self.summary["run elapsed time"] = RunTime()
     sheets = self.excelAPP.getShNameList()
     self.reportNameList = []
     try:
         if not os.path.exists(REPORTPATH):
             os.mkdir(REPORTPATH)
         if not os.path.exists(FAILREPORTPATH):
             os.mkdir(FAILREPORTPATH)
     except:
         Log.error("create report fail")
     for sheetName in sheets:
         self.counts = Counts()
         if sheetName.lower().find("test") == -1:
             continue
         self.resetReportFileName(reportFileName, sheetName)
         self.reportNameList.append(self.reportFileName)
         #self.reportNameList.append(self.failReportFileName)
         print 'start test: ', sheetName
         try:
             self.doSheet(excelAPP, sheetName)
         except KeyboardInterrupt:
             sys.exit(0)
     self.makeSummaryReport()
     Log.debug('end: ExcelColumnFixture.dosheets')
Beispiel #4
0
 def setLoginInfo(self, client):
     if hasattr(self, 'initBeforeTest') and self.initBeforeTest:
         if "cookie" in self.initBeforeTest:
             client.cookie = self.initBeforeTest['cookie']
         if "token" in self.initBeforeTest:
             client.token = self.initBeforeTest['token']
         Log.debug("initBeforeTest: ", self.initBeforeTest)
Beispiel #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)
Beispiel #6
0
 def savePreResultInfo(self, resp):
     Log.debug('start savePreResultInfo: ' + self._CLASSNAME)
     try:
         Log.debug('start savePreResultInfo: ' + resp)
         respDict = strToDict(resp)
         Log.debug('respDict: ', respDict)
         Log.debug('needSavePreResults: ', self.needSavePreResults)
         if respDict and self.needSavePreResults.find('{') > -1:
             needSavePreResultDict = strToDict(self.needSavePreResults)
             if needSavePreResultDict:
                 Log.debug('needSavePreResultDict: ', needSavePreResultDict)
                 for key in needSavePreResultDict:
                     self.getValueFromResp(key, needSavePreResultDict[key],
                                           respDict)
             else:
                 print 'json或dictionary is error' + self.needSavePreResults  #忽略
         else:
             needSavePreResultList = self.needSavePreResults.split(';')
             for savePreResult in needSavePreResultList:
                 [key, value] = savePreResult.split('=')
                 #                    if respDict:
                 #                        self.getValueFromResp(key, value, respDict)
                 #                    else:
                 self.getValueFromResp(key, value, resp)
     except BaseException, e:
         Log.error(e)
    def dorequest(self, url, args=None, \
                        content_type=None, \
                        methodname='POST'):
        response = None
        Log.debug('url:', url)
        Log.debug('args:', args)
        self.setHeader()
        if methodname.upper() == 'POST':
            response = self.httppost(url, args, content_type)
        elif methodname.upper() == 'GET':
            response = self.get(url, args, content_type)
        elif methodname.upper() == 'UPLOAD':
            if  os.path.exists(args):
                response = self.uploadfile(url, args, content_type)
            else:
                Log.error('filepath is not exists: ', args)
                response = 'filepath is not exists:'
        else:
            print 'does not implement!'
#        try:
#            cookie = self.getCookie(response.info())
#            self.setCookie(cookie)
#        except:
#            pass
        return response
 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 dorequest(self, url, args=None, \
                        content_type=None, \
                        methodname='POST'):
        response = None
        Log.debug('url:', url)
        Log.debug('args:', args)
        self.setHeader()
        if methodname.upper() == 'POST':
            response = self.httppost(url, args, content_type)
        elif methodname.upper() == 'GET':
            response = self.get(url, args, content_type)
        elif methodname.upper() == 'UPLOAD':
            if os.path.exists(args):
                response = self.uploadfile(url, args, content_type)
            else:
                Log.error('filepath is not exists: ', args)
                response = 'filepath is not exists:'
        else:
            print 'does not implement!'
#        try:
#            cookie = self.getCookie(response.info())
#            self.setCookie(cookie)
#        except:
#            pass
        return response
def strToJson(data):
    try:
        datajson = json.loads(data)
    except BaseException, e:
        Log.debug("strToJson",  e)
        print e
        datajson = {}
Beispiel #11
0
 def proceHeadInfo(self, info):
     try:
         if info and 'Set-Cookie' in info:
             self.headerinfo = info
             self.cookie = info['Set-Cookie']
     except:
         Log.debug('proceHeadInfo error')
Beispiel #12
0
 def dosheets(self, excelAPP, reportFileName):
     Log.debug('start: ExcelColumnFixture.dosheets')
     self.excelAPP = excelAPP
     self.reportFileName = reportFileName
     self.summary["run date"] = time.ctime(time.time())
     self.summary["run elapsed time"] = RunTime()
     sheets = self.excelAPP.getShNameList()
     self.reportNameList = []
     try:
         if not os.path.exists(REPORTPATH):
             os.mkdir(REPORTPATH)
         if not os.path.exists(FAILREPORTPATH):
             os.mkdir(FAILREPORTPATH)
     except:
         Log.error("create report fail")
     for sheetName in sheets:
         self.counts = Counts()
         if sheetName.lower().find("test") == -1:
             continue
         self.resetReportFileName(reportFileName, sheetName)
         self.reportNameList.append(self.reportFileName)
         #self.reportNameList.append(self.failReportFileName)
         print 'start test: ', sheetName
         try:
             self.doSheet(excelAPP, sheetName)
         except KeyboardInterrupt:
             sys.exit(0)
     self.makeSummaryReport()
     Log.debug('end: ExcelColumnFixture.dosheets')
Beispiel #13
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
    def savePreResultInfo(self, resp):
        Log.debug('start savePreResultInfo: ' + self._CLASSNAME)
        try:
            Log.debug('start savePreResultInfo: ' + resp)
            respDict = strToDict(resp)
            Log.debug('respDict: ', respDict)
            Log.debug('needSavePreResults: ', self.needSavePreResults)
            if respDict and self.needSavePreResults.find('{') > -1:
                needSavePreResultDict = strToDict(self.needSavePreResults)
                if needSavePreResultDict:
                    Log.debug('needSavePreResultDict: ', needSavePreResultDict)
                    for key in needSavePreResultDict:
                        self.getValueFromResp(key, needSavePreResultDict[key], respDict)
                else:
                    print 'json或dictionary is error'  + self.needSavePreResults#忽略
            else:
                needSavePreResultList = self.needSavePreResults.split(';')
                for savePreResult in needSavePreResultList:
                    [key, value] = savePreResult.split('=')
#                    if respDict:
#                        self.getValueFromResp(key, value, respDict)
#                    else:
                    self.getValueFromResp(key,  value, resp)
        except BaseException, e:
            Log.error(e)
 def proceHeadInfo(self, info):
     try:
         if info and 'Set-Cookie' in info:
             self.headerinfo = info
             self.cookie = info['Set-Cookie']
     except:
         Log.debug('proceHeadInfo error') 
 def runTest(self):
     Log.debug('start: ExcelTestDriver.runTest')
     fixture = None
     starttime = datetime.datetime.now()
     runTime = 0
     iterationCount = GlobalSetting.ITERATION
     if type(iterationCount) != types.IntType:
         iterationCount = 0
     count = 0
     while True:
         count += 1
         fixture = ExcelColumnFixture()
         excelAPP = util.excel.ExcelAppRD()
         excelAPP.openExcel(self.infilename)
         print 'now start to test......'
         reportFileName = 'report'
         if count > 1:
             reportFileName = 'report' + str(count)
         fixture.dosheets(excelAPP, reportFileName)
         endtime = datetime.datetime.now()
         runTime = (endtime - starttime).seconds
         print 'run time(seconds) is: ' + str(runTime)
         #Log.debug('open report ' + str(fixture.reportNameList))
         fixture.openFileReport()
         if GlobalSetting.RUNTIME > 0:
             if runTime > GlobalSetting.RUNTIME:
                 break
         elif iterationCount < 1:
             break
         iterationCount -= 1
     Log.debug('end: ExcelTestDriver.runTest')
 def getneedSavePreResultkeyRe(self, value, key):
     restr = ''
     try:
         restr = '\\"' + key + '\\"' + ':' + '\\"' + value + '\\"'
     except:
         pass
     Log.debug('match re: ', restr)
     return restr
 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)
Beispiel #19
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)
Beispiel #20
0
 def getneedSavePreResultkeyRe(self, value, key):
     restr = ''
     try:
         restr = '\\"' + key + '\\"' + ':' + '\\"' + value + '\\"'
     except:
         pass
     Log.debug('match re: ', restr)
     return restr
 def setUrl(self):
     #如果测试用例没有url列,或者为空,则用表头的url值
     if not hasattr(self, 'url') or not self.url:
         if self.interface and self.function:
             self.url = self.interface + self.function
         else:
             Log.debug("self.interface or  self.function is none")
             Log.debug("self.url", self.url)
     return self.url
Beispiel #22
0
 def makeReportTail(self, counts, outputReport=None):
     if outputReport == None:
         outputReport = self.outputReport
     try:
         testResult = 'Test Result: ' + counts.toString()
         outputReport.write('<H2>' + testResult + '</H2>\n')
     except BaseException, e:
         Log.debug('counts')
         Log.debug(e)
 def makeReportTail(self, counts, outputReport=None):
     if outputReport == None:
         outputReport = self.outputReport
     try:
         testResult = 'Test Result: ' + counts.toString()
         outputReport.write('<H2>' + testResult + '</H2>\n')
     except BaseException, e:
         Log.debug('counts')
         Log.debug(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)
 def execute(self, sql):
     result = False
     try:
         result = self.cur.execute(sql)
         Log.debug("execute sql statement!", sql)
         print "execute sql success"
         result = True
     except Exception, e:
         print "Execute Fail!"
         Log.error("execute sql fail!", e)
 def execute(self, sql):
     result = False
     try:
         result = self.cur.execute(sql)
         Log.debug("execute sql statement!", sql)
         print "execute sql success"
         result = True
     except Exception, e:
         print "Execute Fail!"
         Log.error("execute sql fail!", e)
 def fileUpload(self):
     reqargs = self.reqargs
     if 'filepath' in self.reqargs:
         self.requestMethod = 'upload'
         filepath = self.reqargs['filepath']
         Log.debug("filepath:", filepath.decode('utf-8').encode('gb2312'))
         reqargs = filepath.decode('utf-8').encode('gb2312')
 #                     self.reqargs = filepath.decode('utf-8').encode('gb2312')
         self.client.referer = "http://pre.moojnn.com/datasource.html" 
     return reqargs
Beispiel #28
0
 def getParamlist(self):
     Log.debug('start getParamlist: ' + self.clas)
     paramList = []
     for param in self._typeDict:
         if param.lower().find('test') > -1 or param.lower().find('url') > -1 \
             or param.lower().find('savepre') > -1:
             continue
         paramList.append(param)
     return paramList
     Log.debug('end getParamlist: ' + self.clas)
Beispiel #29
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)
Beispiel #30
0
 def fileUpload(self):
     reqargs = self.reqargs
     if 'filepath' in self.reqargs:
         self.requestMethod = 'upload'
         filepath = self.reqargs['filepath']
         Log.debug("filepath:", filepath.decode('utf-8').encode('gb2312'))
         reqargs = filepath.decode('utf-8').encode('gb2312')
         #                     self.reqargs = filepath.decode('utf-8').encode('gb2312')
         self.client.referer = "http://pre.moojnn.com/datasource.html"
     return reqargs
 def convertExcelToHtml(self, filename, multipleInstanceFlag = False):
     convertExcelToHtml = None
     lShNames = None
     if multipleInstanceFlag:
         convertExcelToHtml = ConvertExcelOfMulInstanceToHtml()
     else:
         convertExcelToHtml = ConvertExcelToHtml()
     Log.debug('GlobalSetting.SHEETS:' + str(GlobalSetting.SHEETS))
     if len(GlobalSetting.SHEETS) > 0:
         lShNames = GlobalSetting.SHEETS   
     return convertExcelToHtml.convertExcelToHtml(filename, lShNames)
 def fliterParamlist(self):
     Log.debug('start fliterParamlist: ' + self._CLASSNAME)
     paramList = []
     for param in self._typeDict:
         #如果包含_下划线,表明不是用作请求参数
         if param.find('_') >0 or param.lower().find('url') > -1 \
             or param.lower().find('savepre') > -1 or \
             param.lower().find('fixture') > -1:
             continue
         paramList.append(param)
     return paramList
     Log.debug('end fliterParamlist: ' + self._CLASSNAME)
 def doCells(self, rowpos, startcolumnPos, ncols, nrows=None):
     Log.debug('start: ExcelColumnFixture.doCells')
     rowdata = ''
     for col in range(startcolumnPos, self.posDict['methodPos'] + 1):
         text = self.excelAPP.getCellStrValue(rowpos, col)
         cell = self.getCellStrValue(text)
         self.doCell(cell, col)
         if cell.text == '' or cell.text == ' ':
             cell.text = '&nbsp;'  # space
         rowdata = rowdata + cell.__str__()
     Log.debug('end: ExcelColumnFixture.doCells')
     return rowdata, rowpos + 1
Beispiel #34
0
 def doCells(self, rowpos, startcolumnPos, ncols, nrows=None):
     Log.debug('start: ExcelColumnFixture.doCells')
     rowdata = ''
     for col in range(startcolumnPos, self.posDict['methodPos'] + 1):
         text = self.excelAPP.getCellStrValue(rowpos, col)
         cell = self.getCellStrValue(text)
         self.doCell(cell, col)
         if cell.text == '' or cell.text == ' ':
             cell.text = '&nbsp;'  # space
         rowdata = rowdata + cell.__str__()
     Log.debug('end: ExcelColumnFixture.doCells')
     return rowdata, rowpos + 1
Beispiel #35
0
 def doCell(self, cell, column):
     Log.debug('start: ExcelColumnFixture.doCell')
     a = self.columnBindings[column]
     text = str(cell.text)
     if a.shouldIgnore(text) == 1:
         pass
     elif a.shouldIgnore(text) == 2:
         self.ignore(cell)
     elif a.field:
         a.set(a.parse(text))
     elif a.method:
         self.check(cell, a)
     Log.debug('end: ExcelColumnFixture.doCell')
Beispiel #36
0
 def genHtmlfile(self, repstr, filename):
     Log.debug('start genHtmlfile: ' + self._CLASSNAME)
     try:
         try:
             outputReport = open(filename, 'w')
             outputReport.write(repstr)
             outputReport.flush()
             outputReport.close()
         except IOError, e:
             Log.error(e)
     finally:
         outputReport.close()
     Log.debug('end genHtmlfile: ' + self._CLASSNAME)
 def doCell(self, cell, column):
     Log.debug('start: ExcelColumnFixture.doCell')
     a = self.columnBindings[column]
     text = str(cell.text)
     if a.shouldIgnore(text) == 1:
         pass
     elif a.shouldIgnore(text) == 2:
         self.ignore(cell)
     elif a.field:
         a.set(a.parse(text))
     elif a.method:
         self.check(cell, a)
     Log.debug('end: ExcelColumnFixture.doCell')
 def genHtmlfile(self, repstr, filename):
     Log.debug('start genHtmlfile: ' + self._CLASSNAME)
     try:
         try:
             outputReport = open(filename, 'w')
             outputReport.write(repstr)
             outputReport.flush()
             outputReport.close()
         except IOError, e:
             Log.error(e)
     finally:
         outputReport.close()
     Log.debug('end genHtmlfile: ' + self._CLASSNAME)
def strToDict(data):
        result = {}
        try:
            temp = re.compile(':null')
            data = temp.sub(":'empty'",data)
            temp = re.compile(':false')
            data = temp.sub(':False',data)
            temp = re.compile(':true')
            data = temp.sub(':True',data)
            result = eval(data)
        except BaseException, e:
            Log.debug(data)
            Log.debug("strToDict exception",  e)
Beispiel #40
0
def strToDict(data):
        result = {}
        try:
            temp = re.compile(':null')
            data = temp.sub(":'empty'",data)
            temp = re.compile(':false')
            data = temp.sub(':False',data)
            temp = re.compile(':true')
            data = temp.sub(':True',data)
            result = eval(data)
        except BaseException, e:
            Log.debug(data)
            Log.debug("strToDict exception",  e)
Beispiel #41
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)
 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 makeRepoter(self):
        Log.debug('start makeRepoter: ' + self._CLASSNAME)
        try:
            try:
                self.outputReport = open(self.reportFileName, 'w')
                self.outputReport.write(self.repstr)
                self.outputReport.flush()
                self.outputReport.close()
                #self.reportNameList.append(self.reportFileName)
            except IOError, e:
                Log.error(e)
#             Log.error('reportFileName does not exists ' + self.reportFileName)
        finally:
            self.outputReport.close()
        Log.debug('end makeRepoter: ' + self._CLASSNAME)
    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)
 def setDynamicUrlPath(self, fromparams={}):
     Log.debug('start setDynamicUrlPath: ' + self._CLASSNAME)
     pattern = '{\\w+}'
     if not fromparams:
         fromparams = self.reqargs
     dynamicPathList = re.findall(pattern, self.url, re.IGNORECASE)
     try:
         for dynamicpath in dynamicPathList:
             dynamicpathVar = dynamicpath[1:-1] #去掉{}
             print fromparams
             if dynamicpathVar in fromparams:
                 self.url = self.url.replace(dynamicpath, fromparams[dynamicpathVar])
             else:
                 Log.error('setDynamicUrlPath fail, reqargs has not ' + dynamicpathVar)
     except Exception, e:
         Log.error(e)
Beispiel #46
0
 def setDynamicUrlPath(self):
     Log.debug('start setDynamicUrlPath: ' + self.clas)
     pattern = '{\\w+}'
     dynamicPathList = re.findall(pattern, self.url, re.IGNORECASE)
     try:
         for dynamicpath in dynamicPathList:
             dynamicpathVar = dynamicpath[1:-1]  #去掉{}
             if dynamicpathVar in self.args:
                 self.url = self.url.replace(dynamicpath,
                                             self.args[dynamicpathVar])
                 self.args.pop(dynamicpathVar)
             else:
                 Log.error('setDynamicUrlPath fail, args has not ' +
                           dynamicpathVar)
     except Exception, e:
         Log.error(e)
Beispiel #47
0
class TempleteFixture(HttpApiFixture):
    '''
            用于测试基于http restful,http协议接口的默认测试构件
    '''

    _CLASSNAME = 'apifixture.TempleteFixture'

    # test method, ruturn actual test result
    # @return {} json, response data
    def test(self):
        Log.debug('start test: ' + self._CLASSNAME)
        self.clearBeforeTest()
        self.befortest()
        self.setUrl()
        self.setReqParams()
        self.fixtureExecResult = self.execFixture()
        self.addPreResultToParams(
        )  #从上次请求产生的response中取得需要保存的参数信息,并保存到本次请求的参数列表中
        try:
            Log.debug('testCaseId:', self.testCaseId)
            self.setRequestMethod()
            #若果请求的路径信息中含有动态变量,则从参数列表中读取
            self.setDynamicUrlPath()
            #若果是上传文件,先调用fielupload,后做doRequest()
            reqargs = self.fileUpload()
            respData = self.doRequest(self.url, reqargs, self.requestMethod)
            self.saveRespDataToFile(respData)
            self.genResultLink(respData)
        except BaseException, e:
            Log.error(e)
        Log.debug('end test: ' + self._CLASSNAME)
        return respData
class HttpApiFixture(ExcelColumnFixture):

    """
    process http api 
    1.read excel file, process header of http request.
    2.e.g. url = interface + function..
    """
    _CLASSNAME = 'apifixture.HttpApiFixture'
    note      = ''
    comments  = ['note', 'Note', 'comment', 'Comment']
    interface = ''  # http url, like http://www.xxx.com:8080/path
    function  = '' #path
    argCounts = 0 #
    initSetupFixture  = [] #在测试运行前需要执行的测试构建的【构建名,构建参数】
    preResultInfo = {} #前一次请求response的需要保存的结果信息
    client = HttpClientUtil() #客户端请求
    previousResp = None  #前一次请求的response
    link = ''
    userdefinefixtureresult = None #测试执行过程中测试构建执行的测试结果信息
    reqargs = {} #http请求参数
    initInfoBeforeTest = {}
    
    def runTest(self, cell, a):
        Log.debug('start runTest: ' + self._CLASSNAME)
        try:
            if not self.expected:
                self.expected = a.parse(cell.text)
        except BaseException, e:
            Log.debug("testcaseid " + str(self.testCaseId))  
            Log.debug(e)
            self.expected = ''
        try:
            actualresult = a.get() #调用测试构建定义的方法
            try:
                #self.needSavePreResults用于保存上次请求response需要保存的测试字段值,不同字段用“,”分割;可用正则或完成字段名,
                if hasattr(self, 'needSavePreResults') and self.needSavePreResults:
                    self.preResultInfo = {} #clear上次保存的信息
                    self.savePreResultInfo(actualresult)
                Log.debug('preResultInfo', self.preResultInfo)
            except BaseException, e:
                Log.error('invoke savePreResultInfo error', e)
            if self.expected and actualresult:
                bresult, message = ResultCheck.checkResult(actualresult, self.expected)
            else:
                if actualresult and actualresult.find('error') < 0:
                    bresult = 1
                    message = "expect result column is null, only output!\n"
                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
Beispiel #49
0
    def makeRepoter(self):
        Log.debug('start makeRepoter: ' + self._CLASSNAME)
        try:
            try:
                self.outputReport = open(self.reportFileName, 'w')
                self.outputReport.write(self.repstr)
                self.outputReport.flush()
                self.outputReport.close()
                #self.reportNameList.append(self.reportFileName)
            except IOError, e:
                Log.error(e)


#             Log.error('reportFileName does not exists ' + self.reportFileName)
        finally:
            self.outputReport.close()
        Log.debug('end makeRepoter: ' + self._CLASSNAME)
def getFiles(foldername, parentdir = None, filepaths = []):
    '''
            获取当前目录&子目录下所有的文件名
    '''
    Log.debug('start: FilesRunner getFiles')
    if parentdir:
        curpath = os.path.join(parentdir, foldername)
    else:
        curpath = foldername
    if os.path.isdir(curpath):
        #当前目录下所有的文件或文件夹
        files = os.listdir(curpath)
        for filename in files:
            getFiles(filename, curpath, filepaths) 
    else:
        filepaths.append(curpath) 
    Log.debug('end: FilesRunner getFiles')
    return  filepaths
 def test(self):
     Log.debug('start test: ' + self._CLASSNAME)
     self.clearBeforeTest()
     self.befortest()
     self.setReqParams()
     self.fixtureExecResult = self.execFixture() 
     #self.addPreResultToParams() #从上次请求产生的response中取得需要保存的参数信息,并保存到本次请求的参数列表中
     try:
         Log.debug('testCaseId:', self.testCaseId)
         self.setRequestMethod()
         #若果请求的路径信息中含有动态变量,则从参数列表中读取
         self.setDynamicUrlPath(self.reqargs)
         reqargs = self.fileUpload() #如果参数中包含filepath,则为文件上传
         respData = self.doRequest(self.url, reqargs, self.requestMethod)
         self.saveRespDataToFile(respData)
         self.genResultLink(respData)
     except BaseException, e:
         Log.error( e )
 def defineVarAndTypeDict(self, heads):
     codestr = ''
     len1 = len(heads)
     sufix = "()"
     self._typeDict.clear()
     try:
         for i in range(len1):
             varname = heads[i]
             if varname[-len(sufix):] == sufix:
                 varname = varname[:-len(sufix)]
             else:
                 # setattr(self, varname, '')
                 codestr = codestr + 'ExcelColumnFixture.' \
                                   + varname + '="" \n'
             self._typeDict[varname] = 'str'  # add varname into type diction
         exec codestr
     except BaseException, err:
         Log.error(err)
         Log.debug(ExcelColumnFixture.__dict__)
    def makeSummaryReport(self):
        Log.debug('start makeSummaryReport: ' + self._CLASSNAME)
        if hasattr(self, 'reportNameList') and len(self.reportNameList) > 1:
            if not os.path.exists(self._DEFAULTREPORTER):
                os.mkdir(self._DEFAULTREPORTER)
            self.summaryReport = open(self.summaryReportName, 'w')
            self.repstr = self.getReportHeader('summary report')
            self.repstr += self.getReportTableHeader()
            columnNames = ['filepath', 'summary result', 'detail reporter url']
            self.repstr += self.getReportTableColumnName(columnNames)
            for reportName in self.reportNameList:
                try:
                    reportfilename = reportName.split(os.sep)[-1]
                    counts = self.summaryCounts[reportfilename]
                except BaseException, e:
                    Log.error(e)
                    counts = 'ERROR:NO DATA'
                countcell = Cell(counts)
                if (hasattr(counts, 'wrong') and counts.wrong == 0):
                    #green
                    countcell.addToTag(" bgcolor=\"#cfffcf\"")
                else:
                    countcell.addToTag(" bgcolor=\"#ffcfcf\"")
                #name = reportName.split(os.sep)[-1]
                linkcell = Cell('<a href=%s>link to html</a>' % reportfilename)
#                 try:
#                     filename = reportfilename[:-12]
#                 except:
#                     filename = 'filename'
                namecell = Cell(reportName)
                namecell.addToTag("align='left'")
                rowdata = namecell.__str__() \
                            + countcell.__str__() \
                            + linkcell.__str__()
#                 if self.ismonitorcpu:
#                     self.cpuChart = Cell('<a href=..\\%s>open cpu chart</a>' \
#                                      %self.cpuRatioChartMap[reportName])
                self.repstr += self.getReportTableRow(rowdata)
            self.repstr += self.getReportTail()
            self.summaryReport.write(self.repstr)
            self.summaryReport.flush()
            self.summaryReport.close()
            print 'make summary report ok'
 def getHeads(self, rowpos, startcolumnPos, ncols):
     Log.debug('start getHeads: ' + self._CLASSNAME)
     heads = []
     col = startcolumnPos
     while col < ncols:
         columnName = self.strip(self.excelAPP.getCellStrValue(rowpos, col))
         ##如果包含result关键字,表明此列为方法列
         if columnName.lower().find('expect') > -1 \
             or columnName.find('()') > -1:
             if columnName.lower().find('expect') > -1:
                 columnName = 'test()'  # test method interface
                 heads.append(columnName)
             self.posDict['methodPos'] = col
             break  # will remove
         else:
             heads.append(columnName)
             col += 1
     Log.debug('end getHeads: ' + self._CLASSNAME)
     return heads, rowpos + 1
 def runTest(self, cell, a):
     Log.debug('start runTest: ' + self._CLASSNAME)
     try:
         if not self.expected:
             self.expected = a.parse(cell.text)
     except BaseException, e:
         Log.debug("testcaseid " + str(self.testCaseId))  
         Log.debug(e)
         self.expected = ''