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')
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)
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)
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 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 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 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)
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
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 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 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)
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 = ' ' # space rowdata = rowdata + cell.__str__() Log.debug('end: ExcelColumnFixture.doCells') return rowdata, rowpos + 1
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)
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)
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)
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
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 = ''