def runtests(test_names, test_dir='.', collect_only=False, report_format='console', browser_type='Firefox', javascript_disabled=False, shared_directory=None, screenshots_on=False, failfast=False, debug=False, webdriver_remote_url=None, device='', version='', browser_platform='ANY', session_name=None, browserstack_enabled=False, vagrant_enabled=False, saucelabs_enabled=False, custom_options=None, extended=False, skip_tracking=False): if test_dir == 'selftests': # XXXX horrible hardcoding # selftests should be a command instead package_dir = os.path.dirname(__file__) test_dir = os.path.join(package_dir, 'selftests') test_dir = _get_full_path(test_dir) if not os.path.isdir(test_dir): msg = 'Specified directory %r does not exist' % test_dir print msg sys.exit(1) shared_directory = find_shared_directory(test_dir, shared_directory) config.shared_directory = shared_directory sys.path.append(shared_directory) config.results_directory = _get_full_path('results') config.saucelabs_enabled = saucelabs_enabled config.browserstack_enabled = browserstack_enabled config.vagrant_enabled = vagrant_enabled test_names = set(test_names) suites = get_suites(test_names, test_dir, shared_directory, collect_only, browser_type, device, version, browser_platform, session_name, javascript_disabled, webdriver_remote_url, screenshots_on, failfast, debug, saucelabs_enabled=saucelabs_enabled, browserstack_enabled=browserstack_enabled, vagrant_enabled=vagrant_enabled, skip_tracking=skip_tracking, custom_options=custom_options, extended=extended ) alltests = TestSuite(suites) if not alltests.countTestCases(): print 'Error: Did not find any tests' sys.exit(1) if collect_only: print 'Collect-Only Enabled, Not Running Tests...\n' print 'Tests Collected:' print '-' * 16 for t in sorted(testtools.testsuite.iterate_tests(alltests)): print t.id() sys.exit(0) if report_format == 'xml': _make_results_dir() fp = file(os.path.join(config.results_directory, 'results.xml'), 'wb') # XXX failfast not supported in XMLTestRunner runner = junitxmlrunner.XMLTestRunner(output=fp, verbosity=2) elif report_format == 'html': _make_results_dir() fp = file(os.path.join(config.results_directory, 'results.html'), 'wb') runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title='SST Test Report', verbosity=2, failfast=failfast ) else: if config.email_notification_enabled: stream = cStringIO.StringIO() else: stream = sys.stderr runner = TextTestRunner(verbosity=2, failfast=failfast, stream=stream, resultclass=SSTTextTestResult) try: return runner.run(alltests) except KeyboardInterrupt: print >> sys.stderr, 'Test run interrupted' finally: # XXX should warn on cases that were specified but not found pass
def runtests(test_names, test_dir='.', file_match='*.py', report_format='console', browser_type='Firefox', javascript_disabled=False, browsermob_enabled=False, shared_directory=None, screenshots_on=False, failfast=False, debug=False, webdriver_remote_url=None, browser_version='', browser_platform='ANY', session_name=None, extended=False): if test_dir == 'selftests': # XXXX horrible hardcoding # selftests should be a command instead package_dir = os.path.dirname(__file__) test_dir = os.path.join(package_dir, 'selftests') test_dir = _get_full_path(test_dir) if not os.path.isdir(test_dir): msg = 'Specified directory %r does not exist' % test_dir print msg sys.exit(1) shared_directory = find_shared_directory(test_dir, shared_directory) config.shared_directory = shared_directory sys.path.append(shared_directory) config.results_directory = _get_full_path('results') config.browsermob_enabled = browsermob_enabled found_tests = set() test_names = set(test_names) suites = ( get_suite( test_names, root, file_match, browser_type, browser_version, browser_platform, session_name, javascript_disabled, webdriver_remote_url, screenshots_on, found_tests, failfast, debug, extended=extended, ) for root, _, _ in os.walk(test_dir, followlinks=True) if os.path.abspath(root) != shared_directory and not os.path.abspath(root).startswith(shared_directory + os.path.sep) and not os.path.split(root)[1].startswith('_') ) alltests = TestSuite(suites) print '' print ' %s test cases loaded\n' % alltests.countTestCases() print '--------------------------------------------------------------' if not alltests.countTestCases(): print 'Error: Did not find any tests' sys.exit(1) if report_format == 'xml': _make_results_dir() fp = file(os.path.join(config.results_directory, 'results.xml'), 'wb') # XXX failfast not supported in XMLTestRunner runner = junitxmlrunner.XMLTestRunner(output=fp, verbosity=2) elif report_format == 'html': _make_results_dir() fp = file(os.path.join(config.results_directory, 'results.html'), 'wb') runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title='SST Test Report', verbosity=2, failfast=failfast ) else: runner = TextTestRunner(verbosity=2, failfast=failfast) try: runner.run(alltests) except KeyboardInterrupt: print >> sys.stderr, 'Test run interrupted' finally: missing = test_names - found_tests for name in missing: msg = 'Warning: test %r not found' % name print >> sys.stderr, msg
def runtests(test_names, test_dir='.', count_only=False, report_format='console', browser_type='Firefox', javascript_disabled=False, browsermob_enabled=False, shared_directory=None, screenshots_on=False, failfast=False, debug=False, webdriver_remote_url=None, browser_version='', browser_platform='ANY', session_name=None, extended=False): if allscrewedup : print "ENTERING runtests" if test_dir == 'selftests': # XXXX horrible hardcoding # selftests should be a command instead package_dir = os.path.dirname(__file__) test_dir = os.path.join(package_dir, 'selftests') test_dir = _get_full_path(test_dir) if not os.path.isdir(test_dir): msg = 'Specified directory %r does not exist' % test_dir print msg sys.exit(1) shared_directory = find_shared_directory(test_dir, shared_directory) config.shared_directory = shared_directory sys.path.append(shared_directory) # config.results_directory = _get_full_path('results') #config.browsermob_enabled = browsermob_enabled test_names = set(test_names) suites = get_suites(test_names, test_dir, shared_directory, count_only, browser_type, browser_version, browser_platform, session_name, javascript_disabled, webdriver_remote_url, screenshots_on, failfast, debug, extended=extended, ) alltests = TestSuite(suites) print alltests.__iter__ print '' print ' %s test cases loaded\n' % alltests.countTestCases() print '--------------------------------------------------------------' if not alltests.countTestCases(): print 'Error: Did not find any tests' sys.exit(1) if count_only: print 'Count-Only Enabled, Not Running Tests' sys.exit(0) print "Report Format: ", report_format if report_format == 'xml': print "Create Results Dir if does not exist" _make_results_dir() fp = None print "config.config.xml_results_file:", config.xml_results_file if config.xml_results_file is None: fp = file(os.path.join(config.results_directory, 'results.xml'), 'wb') else: fp = file(config.xml_results_file, 'wb') # XXX failfast not supported in XMLTestRunner runner = junitxmlrunner.XMLTestRunner(output=fp, verbosity=2) elif report_format == 'html': _make_results_dir() fp = file(os.path.join(config.results_directory, 'results.html'), 'wb') runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title='NSUI Test Report', description='Report for this test run, please expand the \ pass/fail for detailed results', dirTestScreenshots = config.results_directory ) else: runner = TextTestRunner(verbosity=2, failfast=failfast) try: runner.run(alltests) #return runner._makeResult() except KeyboardInterrupt: print >> sys.stderr, 'Test run interrupted' finally: # XXX should warn on cases that were specified but not found pass