def _add_test_methods(mcs, attrs, urlpatterns): # loop through every URL pattern for index, (func, regex, url_name) in enumerate(extract_views_from_urlpatterns(urlpatterns)): if func.__module__.startswith("%s." % attrs["module"]): pass elif func.__module__ == attrs["module"]: pass else: continue if hasattr(func, "__name__"): func_name = func.__name__ elif hasattr(func, "__class__"): func_name = "%s()" % func.__class__.__name__ else: func_name = re.sub(r" at 0x[0-9a-f]+", "", repr(func)) url_pattern = smart_text(simplify_regex(regex)) name = "_".join( ["test", func.__module__.replace(".", "_"), slugify("%s" % func_name)] + slugify(url_pattern.replace("/", "_") or "root").replace("_", " ").split() ) url = url_pattern for key, value in attrs["variables"].items(): url = url.replace("<%s>" % key, value) # bail out if we don't know how to visit this URL properly testfunc = unittest.skipIf( any(re.search(stop_pattern, url) for stop_pattern in [r"<.*>"]), "URL pattern %r contains stop pattern." % url, )(make_test_get_function(name, url, url_pattern)) attrs[name] = testfunc
def handle(self, *args, **options): if args: appname, = args namespace = options.get("namespace", "") if settings.ADMIN_FOR: settings_modules = [__import__(m, {}, {}, [""]) for m in settings.ADMIN_FOR] else: settings_modules = [settings] views = {} for settings_mod in settings_modules: try: urlconf = __import__(settings_mod.ROOT_URLCONF, {}, {}, [""]) except Exception, e: if options.get("traceback", None): import traceback traceback.print_exc() print style.ERROR("Error occurred while trying to load %s: %s" % (settings_mod.ROOT_URLCONF, str(e))) continue view_functions = extract_views_from_urlpatterns(urlconf.urlpatterns) for (func, regex, url_name) in view_functions: if url_name: views[url_name] = simplify_regex(regex)
def _add_test_methods(mcs, attrs, urlpatterns): # loop through every URL pattern for index, (func, regex, url_name) in enumerate( extract_views_from_urlpatterns(urlpatterns)): if func.__module__.startswith("%s." % attrs['module']): pass elif func.__module__ == attrs['module']: pass else: continue if hasattr(func, '__name__'): func_name = func.__name__ elif hasattr(func, '__class__'): func_name = '%s()' % func.__class__.__name__ else: func_name = re.sub(r' at 0x[0-9a-f]+', '', repr(func)) url_pattern = smart_text(simplify_regex(regex)) name = '_'.join([ 'test', func.__module__.replace('.', '_'), slugify('%s' % func_name), ] + slugify(url_pattern.replace('/', '_') or 'root').replace( '_', ' ').split(), ) url = url_pattern for key, value in attrs['variables'].items(): url = url.replace('<%s>' % key, value) # bail out if we don't know how to visit this URL properly testfunc = unittest.skipIf( any( re.search(stop_pattern, url) for stop_pattern in [ r'<.*>', ]), 'URL pattern %r contains stop pattern.' % url, )(make_test_get_function(name, url, url_pattern), ) attrs[name] = testfunc
def add_test_methods(testcase, urlpatterns): decorator = ['login_required'] # loop through every URL pattern for index, (func, regex, url_name) in enumerate( extract_views_from_urlpatterns(urlpatterns) ): if hasattr(func, '__globals__'): func_globals = func.__globals__ elif hasattr(func, 'func_globals'): func_globals = func.func_globals else: func_globals = {} decorators = [d for d in decorator if d in func_globals] if isinstance(func, functools.partial): func = func.func decorators.insert(0, 'functools.partial') if hasattr(func, '__name__'): func_name = func.__name__ elif hasattr(func, '__class__'): func_name = '%s()' % func.__class__.__name__ else: func_name = re.sub(r' at 0x[0-9a-f]+', '', repr(func)) url_pattern = smart_text(simplify_regex(regex)) name = '_'.join( [ 'test', '%.4d' % index, func.__module__.replace(u'.', u'_'), slugify(u'%s' % func_name), ] + slugify( url_pattern.replace(u'/', u'_') or u'root' ).replace(u'_', u' ').split(), ) url = re.sub('<[\w_]+>', '1', url_pattern) # bail out if we don't know how to visit this URL properly testfunc = unittest.skipIf( any( re.search(stop_pattern, url_pattern) for stop_pattern in [ r'<uidb64>', #r'<app_label>', #r'<model>', #r'<key>', #r'<token>', #r'/tasks/', #r'/usage/', #r'/captcha/', ] ), 'URL pattern %r contains stop pattern.' % url_pattern, )( make_test_get_function(name, url, url_pattern), ) view_path = '%s.%s' % (func.__module__, func_name) testfunc = unittest.skipIf( any( re.search(stop_pattern, view_path) for stop_pattern in [ r'^captcha\.', r'^djcelery\.', r'^ajax_select\.', r'^django\.contrib\.auth\.views\.', r'^django\.contrib\.staticfiles\.views\.', r'^django_xmlrpc\.views\.', r'^karaage\.people\.views\.persons\.activate$', r'^kgusage\.views\.', ] ), 'View %r contains stop pattern.' % view_path, )( testfunc, ) setattr(testcase, name, testfunc)