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