Selenium测试未正确处理django中间件
我正在使用Django框架,每次成功登录我的站点时都会出现此错误。所以,是的,不正确的登录不会触发它。它不会影响站点或我的测试,但是stacktrace对每个测试都很烦人。我将Python3和django 2与django adminlte cruds和django guardian一起使用 这是完整的stacktrace,我完全不知道我的代码会导致这个错误,我也看过其他关于相同错误的帖子,但找不到任何适用于我的代码的东西Selenium测试未正确处理django中间件,django,python-3.x,selenium,Django,Python 3.x,Selenium,我正在使用Django框架,每次成功登录我的站点时都会出现此错误。所以,是的,不正确的登录不会触发它。它不会影响站点或我的测试,但是stacktrace对每个测试都很烦人。我将Python3和django 2与django adminlte cruds和django guardian一起使用 这是完整的stacktrace,我完全不知道我的代码会导致这个错误,我也看过其他关于相同错误的帖子,但找不到任何适用于我的代码的东西 Traceback (most recent call last):
Traceback (most recent call last): File "/usr/lib/python3.5/wsgiref/handlers.py", line 137, in run
self.result = application(self.environ, self.start_response) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/contrib/staticfiles/handlers.py", line 67, in __call__
return super().__call__(environ, start_response) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/core/handlers/wsgi.py", line 146, in __call__
response = self.get_response(request) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/contrib/staticfiles/handlers.py", line 62, in get_response
return super().get_response(request) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/core/handlers/base.py", line 81, in get_response
response = self._middleware_chain(request) TypeError: 'NoneType' object is not callable Traceback (most recent call last): File "/usr/lib/python3.5/wsgiref/handlers.py", line 137, in run
self.result = application(self.environ, self.start_response) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/contrib/staticfiles/handlers.py", line 67, in __call__
return super().__call__(environ, start_response) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/core/handlers/wsgi.py", line 146, in __call__
response = self.get_response(request) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/contrib/staticfiles/handlers.py", line 62, in get_response
return super().get_response(request) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/core/handlers/base.py", line 81, in get_response
response = self._middleware_chain(request) TypeError: 'NoneType' object is not callable Traceback (most recent call last): File "/usr/lib/python3.5/wsgiref/handlers.py", line 137, in run
self.result = application(self.environ, self.start_response) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/contrib/staticfiles/handlers.py", line 67, in __call__
return super().__call__(environ, start_response) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/core/handlers/wsgi.py", line 146, in __call__
response = self.get_response(request) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/contrib/staticfiles/handlers.py", line 62, in get_response
return super().get_response(request) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/core/handlers/base.py", line 81, in get_response
response = self._middleware_chain(request) TypeError: 'NoneType' object is not callable Traceback (most recent call last): File "/usr/lib/python3.5/wsgiref/handlers.py", line 137, in run
self.result = application(self.environ, self.start_response) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/contrib/staticfiles/handlers.py", line 67, in __call__
return super().__call__(environ, start_response) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/core/handlers/wsgi.py", line 146, in __call__
response = self.get_response(request) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/contrib/staticfiles/handlers.py", line 62, in get_response
return super().get_response(request) File "/home/ellen/.virtualenvs/purple_box/lib/python3.5/site-packages/django/core/handlers/base.py", line 81, in get_response
response = self._middleware_chain(request) TypeError: 'NoneType' object is not callable
请让我知道我如何能澄清更多,如果你有任何关于修复的提示。谢谢
编辑:
我的主页视图
@login_required
def base(request):
"""
View function for home page of site.
"""
# Render the HTML template base.html with the data in the context variable
return render(request, 'cruds/base.html', context={},)
编辑2:
顺便说一句,当我执行功能测试(Selenium)时会发生这种情况。在我的单元测试期间,或者当我自己登录到站点并检查服务器日志时,不会发生这种情况
应要求:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Selenium setup-definitions.py:
class UserBaseSeleniumTestCase(StaticLiveServerTestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.testuser = User.objects.create_user(
username='testuser', password=ROLES["testuser"])
cls.testuser.is_active = True
cls.testuser.save()
cls.browser = webdriver.Firefox()
cls.browser.get(cls.live_server_url)
@classmethod
def tearDownClass(cls):
cls.browser.quit()
super().tearDownClass()
def login(self, username, password):
self.browser.get('%s%s' % (self.live_server_url,
reverse_lazy("login")))
username_input = self.browser.find_element_by_name("username")
username_input.send_keys(username)
password_input = self.browser.find_element_by_name("password")
password_input.send_keys(password)
self.browser.find_element_by_name("login").click()
test.py-出现错误的测试之一,任何成功登录的测试都会出现错误:
class CorrectLoginTestCase(UserBaseSeleniumTestCase):
def test_correct_login(self):
self.login('testuser', ROLES["testuser"])
expected_url = self.live_server_url + '/home/'
self.assertEqual(self.browser.current_url, expected_url)
显示你的视图,模型你可以粘贴你的登录方法吗?因为它一定是从那里你在这里得到一个错误,我没有发现任何错误errors@AbiWaqas我只有一个带有登录表单和提交按钮的html页面,登录由django处理。查看堆栈跟踪,我发现
self.\u middleware\u chain(request)
是问题所在。由于某种原因,\u中间件\u链
是无
。我想看看你是如何设置硒测试的。你能分享一下失败的测试吗?它是针对实时服务器实例进行测试,还是selenium与您的测试服务器在同一进程中运行?有一个bug报告已经解决了。