コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
ファイル: runtests.py プロジェクト: jumboTest/test
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