加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 当我在Django中运行完整的测试套件时,我收到有关缺少M

发布时间:2020-12-16 23:01:23 所属栏目:Python 来源:网络整理
导读:我的应用程序叫做abcapp.我在 Python 2.7上运行Django 1.5b1.同样的问题发生在django的最新trunk版本中. 当我运行manage.py test abcapp时,我写的所有测试都通过了. 当我运行manage.py测试时,我遇到了一连串的失败.显示了第一个失败: Traceback (most recen
我的应用程序叫做abcapp.我在 Python 2.7上运行Django 1.5b1.同样的问题发生在django的最新trunk版本中.

当我运行manage.py test abcapp时,我写的所有测试都通过了.

当我运行manage.py测试时,我遇到了一连串的失败.显示了第一个失败:

Traceback (most recent call last):
  File "C:Program FilesDjango-1.5b1djangocorehandlersbase.py",line 116,in get_response
    response = callback(request,*callback_args,**callback_kwargs)
  File "C:Program FilesDjango-1.5b1djangoviewsdecoratorscache.py",line 89,in _wrapped_view_func
    response = view_func(request,*args,**kwargs)
  File "C:Program FilesDjango-1.5b1djangocontribmessagestestsurls.py",line 30,in add
    getattr(messages,message_type)(request,msg)
  File "C:Program FilesDjango-1.5b1djangocontribmessagesapi.py",line 70,in debug
    fail_silently=fail_silently)
  File "C:Program FilesDjango-1.5b1djangocontribmessagesapi.py",line 22,in add_message
    raise MessageFailure('You cannot add messages without installing '
MessageFailure: You cannot add messages without installing django.contrib.messages.middleware.MessageMiddleware

测试结果如下:

======================================================================
FAIL: test_clearsessions_command (django.contrib.sessions.tests.FileSessionTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:Program FilesDjango-1.5b1djangotestutils.py",line 213,in inner
    return test_func(*args,**kwargs)
  File "C:Program FilesDjango-1.5b1djangocontribsessionstests.py",line 444,in test_clearsessions_command
    self.assertEqual(1,count_sessions())
AssertionError: 1 != 2

----------------------------------------------------------------------
Ran 474 tests in 5.768s

FAILED (failures=1,skipped=141,expected failures=1)

与消息相反,我的MIDDLEWARE_CLASSES中有django.contrib.messages.middleware.MessageMiddleware.我的MIDDLEWARE_CLASSES的值如下.我在我的应用程序中使用消息没有任何问题.

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','debug_toolbar.middleware.DebugToolbarMiddleware',)

任何人都可以对这个问题有所了解吗?虽然我只能运行自己的测试,但我希望运行整个套件以确保适当的质量控制.

研究结果:我通过自己的测试注意到,当使用测试http客户端时,没有加载任何中间件.当我试图通过测试客户端中的Web请求测试我自己的中间件时,我发现了这一点.如果是这种情况,这是否意味着djanog核心中存在不可测试的代码?

解决方法

这似乎是Windows版本的一个错误.

这是问题File-based session does not store any data on Windows.
建议的解决方法:在django / contrib / sessions / backends / file.py中用shutil.move替换os.rename:

+import shutil

....

 -os.rename(output_file_name,session_file_name)

 +shutil.move(output_file_name,session_file_name)

Original patch

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读