class BaseTestXMLOutputWithXML(unittest.TestCase): def configure(self, args): parser = optparse.OptionParser() self.x.add_options(parser, env={}) (options, args) = parser.parse_args(args) self.x.configure(options, Config()) def setUp(self): self.xmlfile = os.path.abspath( os.path.join(os.path.dirname(__file__), 'support', 'xunit.xml')) self.x = Xunit() try: import xml.etree.ElementTree except ImportError: self.ET = False else: self.ET = xml.etree.ElementTree def tearDown(self): os.unlink(self.xmlfile) def get_xml_report(self): class DummyStream: pass self.x.report(DummyStream()) f = open(self.xmlfile, 'rb') data = f.read() f.close() return data
class TestEscaping(unittest.TestCase): def setUp(self): self.x = Xunit() def test_all(self): eq_(self.x._quoteattr( '''<baz src="http://foo?f=1&b=2" quote="inix hubris 'maximus'?" />'''), ('"<baz src="http://foo?f=1&b=2" ' 'quote="inix hubris \'maximus\'?" />"')) def test_unicode_is_utf8_by_default(self): if not UNICODE_STRINGS: eq_(self.x._quoteattr(u'Ivan Krsti\u0107'), '"Ivan Krsti\xc4\x87"') def test_unicode_custom_utf16_madness(self): self.x.encoding = 'utf-16' utf16 = self.x._quoteattr(u'Ivan Krsti\u0107')[1:-1] if UNICODE_STRINGS: # If all internal strings are unicode, then _quoteattr shouldn't # have changed anything. eq_(utf16, u'Ivan Krsti\u0107') else: # to avoid big/little endian bytes, assert that we can put it back: eq_(utf16.decode('utf16'), u'Ivan Krsti\u0107') def test_control_characters(self): # quoting of \n, \r varies in diff. python versions n = saxutils.quoteattr('\n')[1:-1] r = saxutils.quoteattr('\r')[1:-1] eq_(self.x._quoteattr('foo\n\b\f\r'), '"foo%s??%s"' % (n, r)) eq_(escape_cdata('foo\n\b\f\r'), 'foo\n??\r')
def run_tests(spider, output_file, settings): """ Helper for running test contractors for a spider and output an XUnit file (for CI) For using offline input the HTTP cache is enabled """ settings.overrides.update({ "HTTPCACHE_ENABLED": True, "HTTPCACHE_EXPIRATION_SECS": 0, }) crawler = CrawlerProcess(settings) contracts = build_component_list( crawler.settings['SPIDER_CONTRACTS_BASE'], crawler.settings['SPIDER_CONTRACTS'], ) xunit = Xunit() xunit.enabled = True xunit.configure(AttributeDict(xunit_file=output_file), Config()) xunit.stopTest = lambda *x: None check = CheckCommand() check.set_crawler(crawler) check.settings = settings check.conman = ContractsManager([load_object(c) for c in contracts]) check.results = xunit # this are specially crafted requests that run tests as callbacks requests = check.get_requests(spider) crawler.install() crawler.configure() crawler.crawl(spider, requests) log.start(loglevel='DEBUG') # report is called when the crawler finishes, it creates the XUnit file report = lambda: check.results.report(check.results.error_report_file) dispatcher.connect(report, signals.engine_stopped) crawler.start()
def setUp(self): self.xmlfile = os.path.abspath( os.path.join(os.path.dirname(__file__), 'support', 'xunit.xml')) self.x = Xunit() try: import xml.etree.ElementTree except ImportError: self.ET = False else: self.ET = xml.etree.ElementTree
class TestEscaping(unittest.TestCase): def setUp(self): self.x = Xunit() def test_all(self): eq_(self.x._xmlsafe( '''<baz src="http://foo?f=1&b=2" quote="inix hubris 'maximus'?" />'''), ('<baz src="http://foo?f=1&b=2" ' 'quote="inix hubris 'maximus'?" />')) def test_unicode_is_utf8_by_default(self): eq_(self.x._xmlsafe(u'Ivan Krsti\u0107'), 'Ivan Krsti\xc4\x87') def test_unicode_custom_utf16_madness(self): self.x.encoding = 'utf-16' utf16 = self.x._xmlsafe(u'Ivan Krsti\u0107') # to avoid big/little endian bytes, assert that we can put it back: eq_(utf16.decode('utf16'), u'Ivan Krsti\u0107')
def setUp(self): self.xmlfile = os.path.abspath(os.path.join(os.path.dirname(__file__), "support", "xunit.xml")) parser = optparse.OptionParser() self.x = Xunit() self.x.add_options(parser, env={}) (options, args) = parser.parse_args(["--with-xunit", "--xunit-file=%s" % self.xmlfile]) self.x.configure(options, Config()) try: import xml.etree.ElementTree except ImportError: self.ET = False else: self.ET = xml.etree.ElementTree
def test_file_from_opt(self): parser = optparse.OptionParser() x = Xunit() x.add_options(parser, env={}) (options, args) = parser.parse_args(["--xunit-file=blagojevich.xml"]) eq_(options.xunit_file, "blagojevich.xml")
class TestXMLOutputWithXML(unittest.TestCase): def setUp(self): self.xmlfile = os.path.abspath( os.path.join(os.path.dirname(__file__), 'support', 'xunit.xml')) parser = optparse.OptionParser() self.x = Xunit() self.x.add_options(parser, env={}) (options, args) = parser.parse_args([ "--with-xunit", "--xunit-file=%s" % self.xmlfile ]) self.x.configure(options, Config()) try: import xml.etree.ElementTree except ImportError: self.ET = False else: self.ET = xml.etree.ElementTree def tearDown(self): os.unlink(self.xmlfile) def get_xml_report(self): class DummyStream: pass self.x.report(DummyStream()) f = open(self.xmlfile, 'rb') return f.read() f.close() def test_addFailure(self): test = mktest() self.x.beforeTest(test) try: raise AssertionError("one is not 'equal' to two") except AssertionError: some_err = sys.exc_info() self.x.addFailure(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) eq_(tree.attrib['name'], "nosetests") eq_(tree.attrib['tests'], "1") eq_(tree.attrib['errors'], "0") eq_(tree.attrib['failures'], "1") eq_(tree.attrib['skip'], "0") tc = tree.find("testcase") eq_(tc.attrib['classname'], "test_xunit.TC") eq_(tc.attrib['name'], "runTest") assert time_taken.match(tc.attrib['time']), ( 'Expected decimal time: %s' % tc.attrib['time']) err = tc.find("failure") eq_(err.attrib['type'], "%s.AssertionError" % (AssertionError.__module__,)) err_lines = err.text.strip().split("\n") eq_(err_lines[0], 'Traceback (most recent call last):') eq_(err_lines[-1], 'AssertionError: one is not \'equal\' to two') eq_(err_lines[-2], ' raise AssertionError("one is not \'equal\' to two")') else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert '<testsuite name="nosetests" tests="1" errors="0" failures="1" skip="0">' in result assert '<testcase classname="test_xunit.TC" name="runTest"' in result assert '<failure type="exceptions.AssertionError"' in result assert "AssertionError: one is not 'equal' to two" in result assert "AssertionError(\"one is not 'equal' to two\")" in result assert '</failure></testcase></testsuite>' in result def test_addFailure_early(self): test = mktest() try: raise AssertionError("one is not equal to two") except AssertionError: some_err = sys.exc_info() # add failure without startTest, due to custom TestResult munging? self.x.addFailure(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) tc = tree.find("testcase") assert time_taken.match(tc.attrib['time']), ( 'Expected decimal time: %s' % tc.attrib['time']) else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert ('<testcase classname="test_xunit.TC" ' 'name="runTest" time="0') in result def test_addError(self): test = mktest() self.x.beforeTest(test) try: raise RuntimeError("some error happened") except RuntimeError: some_err = sys.exc_info() self.x.addError(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) eq_(tree.attrib['name'], "nosetests") eq_(tree.attrib['tests'], "1") eq_(tree.attrib['errors'], "1") eq_(tree.attrib['failures'], "0") eq_(tree.attrib['skip'], "0") tc = tree.find("testcase") eq_(tc.attrib['classname'], "test_xunit.TC") eq_(tc.attrib['name'], "runTest") assert time_taken.match(tc.attrib['time']), ( 'Expected decimal time: %s' % tc.attrib['time']) err = tc.find("error") eq_(err.attrib['type'], "%s.RuntimeError" % (RuntimeError.__module__,)) err_lines = err.text.strip().split("\n") eq_(err_lines[0], 'Traceback (most recent call last):') eq_(err_lines[-1], 'RuntimeError: some error happened') eq_(err_lines[-2], ' raise RuntimeError("some error happened")') else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert '<testsuite name="nosetests" tests="1" errors="1" failures="0" skip="0">' in result assert '<testcase classname="test_xunit.TC" name="runTest"' in result assert '<error type="exceptions.RuntimeError"' in result assert 'RuntimeError: some error happened' in result assert '</error></testcase></testsuite>' in result def test_non_utf8_error(self): # See http://code.google.com/p/python-nose/issues/detail?id=395 test = mktest() self.x.beforeTest(test) try: raise RuntimeError(chr(128)) # cannot encode as utf8 except RuntimeError: some_err = sys.exc_info() self.x.addError(test, some_err) result = self.get_xml_report() print repr(result) if self.ET: tree = self.ET.fromstring(result) tc = tree.find("testcase") err = tc.find("error") if UNICODE_STRINGS: eq_(err.attrib['message'], '\x80') else: eq_(err.attrib['message'], u'\ufffd') else: # this is a dumb test for 2.4- assert 'RuntimeError: \xef\xbf\xbd' in result def test_addError_early(self): test = mktest() try: raise RuntimeError("some error happened") except RuntimeError: some_err = sys.exc_info() self.x.startContext(None) # call addError without startTest # which can happen if setup() raises an error self.x.addError(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) tc = tree.find("testcase") assert time_taken.match(tc.attrib['time']), ( 'Expected decimal time: %s' % tc.attrib['time']) else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert ('<testcase classname="test_xunit.TC" ' 'name="runTest" time="0') in result def test_addSuccess(self): test = mktest() self.x.beforeTest(test) self.x.addSuccess(test, (None,None,None)) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) eq_(tree.attrib['name'], "nosetests") eq_(tree.attrib['tests'], "1") eq_(tree.attrib['errors'], "0") eq_(tree.attrib['failures'], "0") eq_(tree.attrib['skip'], "0") tc = tree.find("testcase") eq_(tc.attrib['classname'], "test_xunit.TC") eq_(tc.attrib['name'], "runTest") assert time_taken.match(tc.attrib['time']), ( 'Expected decimal time: %s' % tc.attrib['time']) else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert '<testsuite name="nosetests" tests="1" errors="0" failures="0" skip="0">' in result assert '<testcase classname="test_xunit.TC" name="runTest"' in result assert '</testsuite>' in result def test_addSuccess_early(self): test = mktest() # call addSuccess without startTest # which can happen (?) -- did happen with JsLint plugin self.x.addSuccess(test, (None,None,None)) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) tc = tree.find("testcase") assert time_taken.match(tc.attrib['time']), ( 'Expected decimal time: %s' % tc.attrib['time']) else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert ('<testcase classname="test_xunit.TC" ' 'name="runTest" time="0') in result
'pymongo.command_cursor', 'pymongo.change_stream', 'pymongo.cursor', 'pymongo.encryption', 'pymongo.encryption_options', 'pymongo.mongo_client', 'pymongo.database', 'pymongo.mongo_replica_set_client', 'gridfs', 'gridfs.grid_file' ]: sys.modules.pop(n) if '--check-exclude-patterns' in sys.argv: check_exclude_patterns = True sys.argv.remove('--check-exclude-patterns') else: check_exclude_patterns = False success = nose.run(config=Config(plugins=PluginManager()), addplugins=[SynchroNosePlugin(), Skip(), Xunit()]) if not success: sys.exit(1) if check_exclude_patterns: unused_module_pats = set(excluded_modules) - excluded_modules_matched assert not unused_module_pats, "Unused module patterns: %s" % ( unused_module_pats, ) unused_test_pats = set(excluded_tests) - excluded_tests_matched assert not unused_test_pats, "Unused test patterns: %s" % ( unused_test_pats, )
class SynchroModuleFinder(object): def find_module(self, fullname, path=None): for module_name in pymongo_modules: if fullname.endswith(module_name): return SynchroModuleLoader(path) # Let regular module search continue. return None class SynchroModuleLoader(object): def __init__(self, path): self.path = path def load_module(self, fullname): return synchro if __name__ == '__main__': # Monkey-patch all pymongo's unittests so they think Synchro is the # real PyMongo. sys.meta_path[0:0] = [SynchroModuleFinder()] # Ensure time.sleep() acts as PyMongo's tests expect: background tasks # can run to completion while foreground pauses. sys.modules['time'] = synchro.TimeModule() nose.main(config=Config(plugins=PluginManager()), addplugins=[SynchroNosePlugin(), Skip(), Xunit()])
def test_defaults(self): parser = optparse.OptionParser() x = Xunit() x.add_options(parser, env={}) (options, args) = parser.parse_args([]) eq_(options.xunit_file, "nosetests.xml")
class TestXMLOutputWithXML(unittest.TestCase): def setUp(self): self.xmlfile = os.path.abspath( os.path.join(os.path.dirname(__file__), 'support', 'xunit.xml')) parser = optparse.OptionParser() self.x = Xunit() self.x.add_options(parser, env={}) (options, args) = parser.parse_args([ "--with-xunit", "--xunit-file=%s" % self.xmlfile ]) self.x.configure(options, Config()) try: import xml.etree.ElementTree except ImportError: self.ET = False else: self.ET = xml.etree.ElementTree def tearDown(self): os.unlink(self.xmlfile) def get_xml_report(self): class DummyStream: pass self.x.report(DummyStream()) f = open(self.xmlfile, 'r') return f.read() f.close() def test_addFailure(self): test = mktest() self.x.startTest(test) try: raise AssertionError("one is not 'equal' to two") except AssertionError: some_err = sys.exc_info() self.x.addFailure(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) eq_(tree.attrib['name'], "nosetests") eq_(tree.attrib['tests'], "1") eq_(tree.attrib['errors'], "0") eq_(tree.attrib['failures'], "1") eq_(tree.attrib['skip'], "0") tc = tree.find("testcase") eq_(tc.attrib['classname'], "test_xunit.TC") eq_(tc.attrib['name'], "test_xunit.TC.runTest") assert int(tc.attrib['time']) >= 0 err = tc.find("failure") eq_(err.attrib['type'], "exceptions.AssertionError") err_lines = err.text.strip().split("\n") eq_(err_lines[0], 'Traceback (most recent call last):') eq_(err_lines[-1], 'AssertionError: one is not \'equal\' to two') eq_(err_lines[-2], ' raise AssertionError("one is not \'equal\' to two")') else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert '<testsuite name="nosetests" tests="1" errors="0" failures="1" skip="0">' in result assert '<testcase classname="test_xunit.TC" name="test_xunit.TC.runTest"' in result assert '<failure type="exceptions.AssertionError">' in result assert 'AssertionError: one is not 'equal' to two' in result assert 'AssertionError("one is not 'equal' to two")' in result assert '</failure></testcase></testsuite>' in result def test_addFailure_early(self): test = mktest() try: raise AssertionError("one is not equal to two") except AssertionError: some_err = sys.exc_info() # add failure without startTest, due to custom TestResult munging? self.x.addFailure(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) tc = tree.find("testcase") eq_(tc.attrib['time'], "0") else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert ('<testcase classname="test_xunit.TC" ' 'name="test_xunit.TC.runTest" time="0">') in result def test_addError(self): test = mktest() self.x.startTest(test) try: raise RuntimeError("some error happened") except RuntimeError: some_err = sys.exc_info() self.x.addError(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) eq_(tree.attrib['name'], "nosetests") eq_(tree.attrib['tests'], "1") eq_(tree.attrib['errors'], "1") eq_(tree.attrib['failures'], "0") eq_(tree.attrib['skip'], "0") tc = tree.find("testcase") eq_(tc.attrib['classname'], "test_xunit.TC") eq_(tc.attrib['name'], "test_xunit.TC.runTest") assert int(tc.attrib['time']) >= 0 err = tc.find("error") eq_(err.attrib['type'], "exceptions.RuntimeError") err_lines = err.text.strip().split("\n") eq_(err_lines[0], 'Traceback (most recent call last):') eq_(err_lines[-1], 'RuntimeError: some error happened') eq_(err_lines[-2], ' raise RuntimeError("some error happened")') else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert '<testsuite name="nosetests" tests="1" errors="1" failures="0" skip="0">' in result assert '<testcase classname="test_xunit.TC" name="test_xunit.TC.runTest"' in result assert '<error type="exceptions.RuntimeError">' in result assert 'RuntimeError: some error happened' in result assert '</error></testcase></testsuite>' in result def test_addError_early(self): test = mktest() try: raise RuntimeError("some error happened") except RuntimeError: some_err = sys.exc_info() # call addError without startTest # which can happen if setup() raises an error self.x.addError(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) tc = tree.find("testcase") eq_(tc.attrib['time'], "0") else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert ('<testcase classname="test_xunit.TC" ' 'name="test_xunit.TC.runTest" time="0">') in result def test_addSuccess(self): test = mktest() self.x.startTest(test) self.x.addSuccess(test, (None,None,None)) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) eq_(tree.attrib['name'], "nosetests") eq_(tree.attrib['tests'], "1") eq_(tree.attrib['errors'], "0") eq_(tree.attrib['failures'], "0") eq_(tree.attrib['skip'], "0") tc = tree.find("testcase") eq_(tc.attrib['classname'], "test_xunit.TC") eq_(tc.attrib['name'], "test_xunit.TC.runTest") assert int(tc.attrib['time']) >= 0 else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert '<testsuite name="nosetests" tests="1" errors="0" failures="0" skip="0">' in result assert '<testcase classname="test_xunit.TC" name="test_xunit.TC.runTest"' in result assert '</testsuite>' in result def test_addSuccess_early(self): test = mktest() # call addSuccess without startTest # which can happen (?) -- did happen with JsLint plugin self.x.addSuccess(test, (None,None,None)) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) tc = tree.find("testcase") eq_(tc.attrib['time'], "0") else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert ('<testcase classname="test_xunit.TC" ' 'name="test_xunit.TC.runTest" time="0" />') in result
def test_file_from_environ(self): parser = optparse.OptionParser() x = Xunit() x.add_options(parser, env={'NOSE_XUNIT_FILE': "kangaroo.xml"}) (options, args) = parser.parse_args([]) eq_(options.xunit_file, "kangaroo.xml")
def setUp(self): self.x = Xunit()
def main(): parser = argparse.ArgumentParser(description="Integration test suite") parser.add_argument("-i", "--iso", dest="iso", help="iso image path or http://url") parser.add_argument("-l", "--level", dest="log_level", type=str, help="log level", choices=["DEBUG", "INFO", "WARNING", "ERROR"], default="ERROR", metavar="LEVEL") parser.add_argument('--no-forward-network', dest='no_forward_network', action="store_true", default=False, help='do not forward environment netork') parser.add_argument('--export-logs-dir', dest='export_logs_dir', type=str, help='directory to save fuelweb logs') parser.add_argument('--installation-timeout', dest='installation_timeout', type=int, help='admin node installation timeout') parser.add_argument('--deployment-timeout', dest='deployment_timeout', type=int, help='admin node deployment timeout') parser.add_argument('--suite', dest='test_suite', type=str, help='Test suite to run', choices=["integration"], default="integration") parser.add_argument('--environment', dest='environment', type=str, help='Environment name', default="integration") parser.add_argument('command', choices=('setup', 'destroy', 'test'), default='test', help="command to execute") parser.add_argument('arguments', nargs=argparse.REMAINDER, help='arguments for nose testing framework') params = parser.parse_args() numeric_level = getattr(logging, params.log_level.upper()) logging.basicConfig(level=numeric_level) paramiko_logger = logging.getLogger('paramiko') paramiko_logger.setLevel(numeric_level + 1) suite = fuelweb_test.integration # todo fix default values if params.no_forward_network: ci = suite.Ci(params.iso, forward=None, env_name=params.environment) else: ci = suite.Ci(params.iso, env_name=params.environment) if params.export_logs_dir is not None: ci.export_logs_dir = params.export_logs_dir if params.deployment_timeout is not None: ci.deployment_timeout = params.deployment_timeout if params.command == 'setup': result = ci.setup_environment() elif params.command == 'destroy': result = ci.destroy_environment() elif params.command == 'test': import nose import nose.config nc = nose.config.Config() nc.verbosity = 3 nc.plugins = PluginManager(plugins=[Xunit()]) # Set folder where to process tests nc.configureWhere( os.path.join(os.path.dirname(os.path.abspath(__file__)), params.test_suite)) suite.ci = ci nose.main( module=suite, config=nc, argv=[__file__, "--with-xunit", "--xunit-file=nosetests.xml"] + params.arguments) result = True else: print("Unknown command '%s'" % params.command) sys.exit(1) if not result: sys.exit(1)
class TestXMLOutputWithXML(unittest.TestCase): def setUp(self): self.xmlfile = os.path.abspath( os.path.join(os.path.dirname(__file__), 'support', 'xunit.xml')) parser = optparse.OptionParser() self.x = Xunit() self.x.add_options(parser, env={}) (options, args) = parser.parse_args( ["--with-xunit", "--xunit-file=%s" % self.xmlfile]) self.x.configure(options, Config()) try: import xml.etree.ElementTree except ImportError: self.ET = False else: self.ET = xml.etree.ElementTree def tearDown(self): os.unlink(self.xmlfile) def get_xml_report(self): class DummyStream: pass self.x.report(DummyStream()) f = open(self.xmlfile, 'r') return f.read() f.close() def test_addFailure(self): test = mktest() self.x.startTest(test) try: raise AssertionError("one is not 'equal' to two") except AssertionError: some_err = sys.exc_info() self.x.addFailure(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) eq_(tree.attrib['name'], "nosetests") eq_(tree.attrib['tests'], "1") eq_(tree.attrib['errors'], "0") eq_(tree.attrib['failures'], "1") eq_(tree.attrib['skip'], "0") tc = tree.find("testcase") eq_(tc.attrib['classname'], "test_xunit.TC") eq_(tc.attrib['name'], "runTest") assert int(tc.attrib['time']) >= 0 err = tc.find("failure") eq_(err.attrib['type'], "exceptions.AssertionError") err_lines = err.text.strip().split("\n") eq_(err_lines[0], 'Traceback (most recent call last):') eq_(err_lines[-1], 'AssertionError: one is not \'equal\' to two') eq_(err_lines[-2], ' raise AssertionError("one is not \'equal\' to two")') else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert '<testsuite name="nosetests" tests="1" errors="0" failures="1" skip="0">' in result assert '<testcase classname="test_xunit.TC" name="runTest"' in result assert '<failure type="exceptions.AssertionError"' in result assert "AssertionError: one is not 'equal' to two" in result assert "AssertionError(\"one is not 'equal' to two\")" in result assert '</failure></testcase></testsuite>' in result def test_addFailure_early(self): test = mktest() try: raise AssertionError("one is not equal to two") except AssertionError: some_err = sys.exc_info() # add failure without startTest, due to custom TestResult munging? self.x.addFailure(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) tc = tree.find("testcase") eq_(tc.attrib['time'], "0") else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert ('<testcase classname="test_xunit.TC" ' 'name="runTest" time="0">') in result def test_addError(self): test = mktest() self.x.startTest(test) try: raise RuntimeError("some error happened") except RuntimeError: some_err = sys.exc_info() self.x.addError(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) eq_(tree.attrib['name'], "nosetests") eq_(tree.attrib['tests'], "1") eq_(tree.attrib['errors'], "1") eq_(tree.attrib['failures'], "0") eq_(tree.attrib['skip'], "0") tc = tree.find("testcase") eq_(tc.attrib['classname'], "test_xunit.TC") eq_(tc.attrib['name'], "runTest") assert int(tc.attrib['time']) >= 0 err = tc.find("error") eq_(err.attrib['type'], "exceptions.RuntimeError") err_lines = err.text.strip().split("\n") eq_(err_lines[0], 'Traceback (most recent call last):') eq_(err_lines[-1], 'RuntimeError: some error happened') eq_(err_lines[-2], ' raise RuntimeError("some error happened")') else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert '<testsuite name="nosetests" tests="1" errors="1" failures="0" skip="0">' in result assert '<testcase classname="test_xunit.TC" name="runTest"' in result assert '<error type="exceptions.RuntimeError"' in result assert 'RuntimeError: some error happened' in result assert '</error></testcase></testsuite>' in result def test_addError_early(self): test = mktest() try: raise RuntimeError("some error happened") except RuntimeError: some_err = sys.exc_info() # call addError without startTest # which can happen if setup() raises an error self.x.addError(test, some_err) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) tc = tree.find("testcase") eq_(tc.attrib['time'], "0") else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert ('<testcase classname="test_xunit.TC" ' 'name="runTest" time="0">') in result def test_addSuccess(self): test = mktest() self.x.startTest(test) self.x.addSuccess(test, (None, None, None)) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) eq_(tree.attrib['name'], "nosetests") eq_(tree.attrib['tests'], "1") eq_(tree.attrib['errors'], "0") eq_(tree.attrib['failures'], "0") eq_(tree.attrib['skip'], "0") tc = tree.find("testcase") eq_(tc.attrib['classname'], "test_xunit.TC") eq_(tc.attrib['name'], "runTest") assert int(tc.attrib['time']) >= 0 else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert '<testsuite name="nosetests" tests="1" errors="0" failures="0" skip="0">' in result assert '<testcase classname="test_xunit.TC" name="runTest"' in result assert '</testsuite>' in result def test_addSuccess_early(self): test = mktest() # call addSuccess without startTest # which can happen (?) -- did happen with JsLint plugin self.x.addSuccess(test, (None, None, None)) result = self.get_xml_report() print result if self.ET: tree = self.ET.fromstring(result) tc = tree.find("testcase") eq_(tc.attrib['time'], "0") else: # this is a dumb test for 2.4- assert '<?xml version="1.0" encoding="UTF-8"?>' in result assert ('<testcase classname="test_xunit.TC" ' 'name="runTest" time="0" />') in result
def test_prefix_from_opt(self): parser = optparse.OptionParser() x = Xunit() x.add_options(parser, env={}) (options, args) = parser.parse_args(["--xunit-prefix-with-testsuite-name"]) eq_(options.xunit_prefix_class, True)
# we want all directories return True def find_examples(self, name): examples = [] if os.path.isdir(name): for subname in os.listdir(name): examples.extend(self.find_examples(os.path.join(name, subname))) return examples elif name.endswith('.py'): # only execute Python scripts return [name] else: return [] def loadTestsFromName(self, name, module=None, discovered=False): all_examples = self.find_examples(name) all_tests = [] for target in ['cython']: for example in all_examples: all_tests.append(RunTestCase(example, target)) return all_tests if __name__ == '__main__': argv = [ __file__, '-v', '--with-xunit', '--verbose', '--exe', '../../examples' ] nose.main(argv=argv, plugins=[SelectFilesPlugin(), Capture(), Xunit()])
def run_test(): nose.main(addplugins=[AutoTestRunner(), AttributeSelector(), Xunit(), Coverage()])
# print preferences (setting happens in RunTestCase.runTest()) utils.print_single_prefs(prefs_dict, set_prefs=prefs) else: # None print(f"Running {target} with default preferences") # RunTestCase.runTest() needs a dictionary prefs_dict = {} image_dir = os.path.join(target_image_dir, utils.dict_to_name(prefs_dict)) success = nose.run(argv=argv, plugins=[ SelectFilesPlugin(target_list, image_dir, prefs_dict), Capture(), Xunit() ]) successes.append(success) print(f"\nTARGET: {target.upper()}") all_success = utils.check_success(successes, all_prefs_combinations) all_successes.append(all_success) if len(args.targets) > 1: print("\nFINISHED ALL TARGETS") if all(all_successes): print("\nALL TARGETS PASSED") else: print("\n{}/{} TARGETS FAILED:".format(
"--tolerance", dest="tolerance", default=None, metavar='int', help="tolerance for relative precision in comparison (trumps strict)") all_strict = ['high', 'medium', 'low'] parser.add_option("", "--strict", dest="strict", default='low', metavar='str', help="strictness for testing precision: [%s]" % " ,".join(all_strict)) xunit_plugin = Xunit() # Make sure this plugin get called by setting its score to be the highest. xunit_plugin.score = 1000000 xunit_plugin.enabled = True # Set up a dummy env for xunit to parse. Note we are using nose's xunit, # not the one bundled in yt env = {"NOSE_XUNIT_FILE": "nosetests.xml"} xunit_plugin.options(parser, env) answer_plugin = AnswerTesting() answer_plugin.enabled = True answer_plugin.options(parser) reporting_plugin = ResultsSummary() reporting_plugin.enabled = True pdb_plugin = debug.Pdb()
def test_prefix_from_environ(self): parser = optparse.OptionParser() x = Xunit() x.add_options(parser, env={'NOSE_XUNIT_PREFIX_WITH_TESTSUITE_NAME': 'true'}) (options, args) = parser.parse_args([]) eq_(options.xunit_prefix_class, True)
"pymongo.change_stream", "pymongo.cursor", "pymongo.encryption", "pymongo.encryption_options", "pymongo.mongo_client", "pymongo.database", "gridfs", "gridfs.grid_file", ]: sys.modules.pop(n) if "--check-exclude-patterns" in sys.argv: check_exclude_patterns = True sys.argv.remove("--check-exclude-patterns") else: check_exclude_patterns = False success = nose.run( config=Config(plugins=PluginManager()), addplugins=[SynchroNosePlugin(), Skip(), Xunit()] ) if not success: sys.exit(1) if check_exclude_patterns: unused_module_pats = set(excluded_modules) - excluded_modules_matched assert not unused_module_pats, "Unused module patterns: %s" % (unused_module_pats,) unused_test_pats = set(excluded_tests) - excluded_tests_matched assert not unused_test_pats, "Unused test patterns: %s" % (unused_test_pats,)