def run(self): super(PageTest, self).run() logger.write( u"url: {0}".format(html.link(self.url, self.url)) ) ## check status code assert self.status == self.response.status, u"HTTP Response status expected {0}, recieved {1}".format(self.status, self.response.status) ## check title & header if not (self.title_xpath == None) and not (self.title == None) : assert_xpath_content( self.webpage, self.title_xpath, self.title ) if not (self.h1_xpath == None) and not (self.h1 == None) : assert_xpath_content( self.webpage, self.h1_xpath, self.h1 ) # text present merge if not self.texts_present is None : for ( xpath, text ) in self.texts_present : txt = self.webpage.find_element_by_xpath(xpath).text assert text in txt, u"Text '{0}' not found, present '{1}'".format(text, txt) # text count merge if not self.texts_count is None : for item in self.texts_count : count = self.webpage.page_source.count( item[0] ) if item[1] == u'<' : assert count < item[2],\ u"Text '{0}' occurs {1} times >= {2}".format( item[0], count, item[2] ) if item[1] == u'=' : assert count == item[2],\ u"Text '{0}' occurs {1} times != {2}".format( item[0], count, item[2] ) if item[1] == u'>' : assert count > item[2],\ u"Text '{0}' occurs {1} times <= {2}".format( item[0], count, item[2] ) if item[1] == u'<=' : assert count <= item[2],\ u"Text '{0}' occurs {1} times > {2}".format( item[0], count, item[2] ) if item[1] == u'>=' : assert count >= item[2],\ u"Text '{0}' occurs {1} times < {2}".format( item[0], count, item[2] ) # execute sub tests for subtest in self.subtests : logger.write( u"Running test '{0}' of '{1}'".format( subtest.__doc__.decode("utf-8"), self.__doc__.decode("utf-8") ) ) with logger.current_test( subtest ) : with browser.current_screenshot_dir( subtest.artifactsDir() ) : try : subtest.setUp( self.webpage ) subtest.run() status = 'success' except Exception as s : status = 'fail' logger.write( u"Error: {0}".format(s) ) snapshot() raise SubTestFail( subtest.__doc__.decode("utf-8") ) finally: subtest.tearDown() logger.set_status( status ) logger.write( html.status_label( status ) ) logger.save_test_result()
def run(self): logger.write( u"Running test '{0}'".format( self.__doc__.decode("utf-8") ) )