Tuesday, 15 June 2010

python - Unit testing complex `__init__` method -



python - Unit testing complex `__init__` method -

i have piece of code class __init__ method , takes 2 arguments.

def __init__(self, port_type, request): self.log = log(__name__, true) self.request = request self.sitecode = port_type.sitecode.upper() self.browser_default_lang = self.request.meta['http_accept_language'].split(',')[0] self.active_lang = self.request.session.get('lang', self.browser_default_lang.lower()) self.static_folder = 'static_%s_%s' % (self.sitecode, self.site_templates_resources_suffix) self.template_path = os.path.join(settings.media_root, self.static_folder) self.template_path_port_type = '%s_%s' % (self.template_path, self.port_type.hash) self.site_media_path = os.path.join(settings.media_url, self.static_folder) self.site_port_type_media_path = '%s_%s' % (self.site_media_path, self.port_type.hash) self.site_config = siteconfig.objects.get(sitecode=self.sitecode) self.site = umsite.objects.get(code=self.port_type.sitecode) self.context = {}

i find hard write unit tests this. should write tests first somehow ended , have refactor , writing them now.

use mock request gives deterministic data, without connecting internet. example, create request object returns fixed string request.meta, , session object returns fixed string session.get(...), etc. assert self.active_lang , other properties need set have right values.

python django refactoring

No comments:

Post a Comment