def run_yaml_test(path, options={}): yaml_path = os.path.join(yaml_tests_dir, path) # We are testing tests, and don't want the latter to print anything, so we temporarily deactivate stderr. sys.stderr = open(os.devnull, 'w') result = run_tests(tax_benefit_system, yaml_path, options) return result
def main(): parser = build_parser() args = parser.parse_args() logging.basicConfig(level = logging.DEBUG if args.verbose else logging.WARNING, stream = sys.stdout) tax_benefit_system = build_tax_benefit_sytem(args.country_package, args.extensions, args.reforms) options = { 'verbose': args.verbose, 'force': args.force, 'name_filter': args.name_filter, 'default_relative_error_margin': args.default_relative_error_margin, 'default_absolute_error_margin': args.default_absolute_error_margin, } tests_found = False for path in args.path: path = os.path.abspath(path) nb_tests = run_tests(tax_benefit_system, path, options) tests_found = tests_found or nb_tests > 0 if not tests_found: print("No tests found!") sys.exit(1) sys.exit(0)
def main(parser=None): if not parser: parser = argparse.ArgumentParser() parser = build_parser(parser) warnings.warn( "The 'openfisca-run-test' command has been deprecated in favor of 'openfisca test' since version 25.0, and will be removed in the future.", Warning) args = parser.parse_args() logging.basicConfig( level=logging.DEBUG if args.verbose else logging.WARNING, stream=sys.stdout) tax_benefit_system = build_tax_benefit_system(args.country_package, args.extensions, args.reforms) options = { 'verbose': args.verbose, 'name_filter': args.name_filter, 'only_variables': args.only_variables, 'ignore_variables': args.ignore_variables, } paths = [os.path.abspath(path) for path in args.path] tests_ok = run_tests(tax_benefit_system, paths, options) if not tests_ok: sys.exit(1)
def run_yaml_test(path, options = None): yaml_path = os.path.join(yaml_tests_dir, path) if options is None: options = {} result = run_tests(tax_benefit_system, yaml_path, options) return result
def run_yaml_test(tax_benefit_system, path, options = None): yaml_path = os.path.join(yaml_tests_dir, path) if options is None: options = {} result = run_tests(tax_benefit_system, yaml_path, options) return result
def main(parser): args = parser.parse_args() logging.basicConfig(level = logging.DEBUG if args.verbose else logging.WARNING, stream = sys.stdout) tax_benefit_system = build_tax_benefit_system(args.country_package, args.extensions, args.reforms) options = { 'pdb': args.pdb, 'verbose': args.verbose, 'name_filter': args.name_filter, 'only_variables': args.only_variables, 'ignore_variables': args.ignore_variables, } paths = [os.path.abspath(path) for path in args.path] sys.exit(run_tests(tax_benefit_system, paths, options))
def main(parser): args = parser.parse_args() logging.basicConfig( level=logging.DEBUG if args.verbose else logging.WARNING, stream=sys.stdout) tax_benefit_system = build_tax_benefit_system(args.country_package, args.extensions, args.reforms) options = { 'pdb': args.pdb, 'verbose': args.verbose, 'name_filter': args.name_filter, 'only_variables': args.only_variables, 'ignore_variables': args.ignore_variables, } paths = [os.path.abspath(path) for path in args.path] sys.exit(run_tests(tax_benefit_system, paths, options))
def main(): parser = build_parser() args = parser.parse_args() logging.basicConfig( level=logging.DEBUG if args.verbose else logging.WARNING, stream=sys.stdout) tax_benefit_system = build_tax_benefit_system(args.country_package, args.extensions, args.reforms) options = { 'verbose': args.verbose, 'name_filter': args.name_filter, } paths = map(os.path.abspath, args.path) tests_ok = run_tests(tax_benefit_system, paths, options) if not tests_ok: sys.exit(1)
BASELINE_TBS_LOAD_TIME = 9.10831403732 BASELINE_YAML_TESTS_TIME = 271.448431969 # Time tax benefit system loading start_time_tbs = time.time() tbs = CountryTaxBenefitSystem() time_spent_tbs = time.time() - start_time_tbs openfisca_france_dir = pkg_resources.get_distribution( 'OpenFisca-France').location yaml_tests_dir = os.path.join(openfisca_france_dir, 'tests', 'mes-aides.gouv.fr') # Time openfisca-run-test runner start_time_tests = time.time() run_tests(tbs, yaml_tests_dir) time_spent_tests = time.time() - start_time_tests def compare_performance(baseline, test_result): delta = (test_result - baseline) * 100 / baseline if test_result > baseline * 1.2: logger.warning( "The perfomance seems to have worsen by {} %.".format(delta)) elif test_result < baseline * 0.8: logger.info( "The performance seems to have been improved by {} %.".format( delta)) else: logging.info("The performance seems steady ({} %).".format(delta))
BASELINE_YAML_TESTS_TIME = 271.448431969 # Time tax benefit system loading start_time_tbs = time.time() tbs = CountryTaxBenefitSystem() time_spent_tbs = time.time() - start_time_tbs openfisca_france_dir = pkg_resources.get_distribution('OpenFisca-France').location yaml_tests_dir = os.path.join(openfisca_france_dir, 'tests', 'mes-aides.gouv.fr') # Time openfisca-run-test runner start_time_tests = time.time() run_tests(tbs, yaml_tests_dir) time_spent_tests = time.time() - start_time_tests def compare_performance(baseline, test_result): delta = (test_result - baseline) * 100 / baseline if test_result > baseline * 1.2: logger.warning("The perfomance seems to have worsen by {} %.".format(delta)) elif test_result < baseline * 0.8: logger.info("The performance seems to have been improved by {} %.".format(delta)) else: logging.info("The performance seems steady ({} %).".format(delta)) logger.info("Generate Tax Benefit System: --- {}s seconds ---".format(time_spent_tbs))
def main(): parser = build_parser() args = parser.parse_args() logging.basicConfig( level=logging.DEBUG if args.verbose else logging.WARNING, stream=sys.stdout) if args.country_package: try: country_package = importlib.import_module(args.country_package) except: print( 'ERROR: `{}` does not seem to be a valid Openfisca country package.' .format(args.country_package)) sys.exit(1) else: installed_country_packages = detect_country_packages() if len(installed_country_packages) == 0: print( 'ERROR: No country package has been detected on your environment. If your country package is installed but not detected, please use the --country_package option.' ) sys.exit(1) country_package_name = installed_country_packages[0] country_package = importlib.import_module(country_package_name) if len(installed_country_packages) > 1: print( 'WARNING: Several country packages detected : `{}`. Using `{}` by default. To use another package, please use the --country_package option.' .format(', '.join(installed_country_packages), country_package_name)) tax_benefit_system = country_package.CountryTaxBenefitSystem() if args.extensions: extensions = [name.strip(' ') for name in args.extensions.split(',')] for extension in extensions: tax_benefit_system.load_extension(extension) if args.reforms: reforms = [name.strip(' ') for name in args.reforms.split(',')] for reform_path in reforms: try: [reform_package, reform_name] = reform_path.rsplit('.', 1) reform_module = importlib.import_module(reform_package) reform = getattr(reform_module, reform_name) tax_benefit_system = reform(tax_benefit_system) except: print( 'ERROR: `{}` does not seem to be a valid Openfisca reform for `{}`.' .format(reform_path, country_package.__name__)) raise options = { 'verbose': args.verbose, 'force': args.force, 'name_filter': args.name_filter, 'default_relative_error_margin': args.default_relative_error_margin, 'default_absolute_error_margin': args.default_absolute_error_margin, } tests_found = False for path in args.path: path = os.path.abspath(path) nb_tests = run_tests(tax_benefit_system, path, options) tests_found = tests_found or nb_tests > 0 if not tests_found: print("No tests found!") sys.exit(1) sys.exit(0)
def test_name_filter(): nb_tests = run_tests(tax_benefit_system, yamls_tests_dir, options={'name_filter': 'success'}) assert nb_tests == 3
def test_run_tests_from_directory_fail(): dir_path = os.path.join(yamls_tests_dir, 'directory') run_tests(tax_benefit_system, dir_path, options={'force': True})
def test_run_tests_from_directory(): dir_path = os.path.join(yamls_tests_dir, 'directory') assert run_tests(tax_benefit_system, dir_path) == 5
def run_yaml_test(file_name, options={}): yaml_path = os.path.join(yamls_tests_dir, '{}.yaml'.format(file_name)) return run_tests(tax_benefit_system, yaml_path, options)