我有一段代码,它是一个类__init__
方法,并且有两个参数。
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 = {}
我觉得很难为此编写单元测试。我应该首先编写测试但不知何故我最终得到了这个并且必须重构并且现在正在编写它们。
答案 0 :(得分:1)
使用模拟request
为您提供确定性数据,而无需连接到互联网。例如,创建一个request
对象,返回request.META
的某个固定字符串,以及一个session
对象,返回session.get(...)
的固定字符串,然后断言{{ 1}}和其他需要设置的属性具有正确的值。