django应用程序硒测试没有静态文件

Posted

技术标签:

【中文标题】django应用程序硒测试没有静态文件【英文标题】:django application selenium testing no static files 【发布时间】:2015-01-24 03:04:47 【问题描述】:

我想对我的 django 应用程序进行一些功能测试。我正在使用硒,测试有效,但问题出在静态文件上。未找到 css/js 状态。 我的测试在 localhost:8081 上运行。 示例 bootstrap.css:

<h1>Not Found</h1><p>The requested URL /static/frontend/bootstrap/3.3.0/css/bootstrap.css was not found on this server.</p>

我找不到任何信息,我是否为 selenium 应用程序添加了一些额外的配置?

引用:

Traceback (most recent call last):
  File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run
    self.result = application(self.environ, self.start_response)
  File "/home/t/py/django/bid/src/venv/local/lib/python2.7/site-packages/django/test/testcases.py", line 1028, in __call__
    return super(FSFilesHandler, self).__call__(environ, start_response)
  File "/home/t/py/django/bid/src/venv/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 187, in __call__
    response = self.get_response(request)
  File "/home/t/py/django/bid/src/venv/local/lib/python2.7/site-packages/django/test/testcases.py", line 1011, in get_response
    return self.serve(request)
  File "/home/t/py/django/bid/src/venv/local/lib/python2.7/site-packages/django/test/testcases.py", line 1023, in serve
    return serve(request, final_rel_path, document_root=self.get_base_dir())
  File "/home/t/py/django/bid/src/venv/local/lib/python2.7/site-packages/django/views/static.py", line 50, in serve
    fullpath = os.path.join(document_root, newpath)
  File "/home/t/py/django/bid/src/venv/lib/python2.7/posixpath.py", line 77, in join
    elif path == '' or path.endswith('/'):
AttributeError: 'NoneType' object has no attribute 'endswith'

【问题讨论】:

【参考方案1】:

您可以使用django.test 中的LiveServerTestCase 而不是 StaticLiveServerTestCase 来自django.contrib.staticfiles.testing

不仅要注意不同的类名,还要注意不同的模块名:

from django.test import LiveServerTestCase
#     ^-- vs --v
from django.contrib.staticfiles.testing import StaticLiveServerTestCase

【讨论】:

救命稻草。我发现的所有 selenium doco 都适用于 django 1.6。【参考方案2】:

好的,我找到了解决方案。首先我必须在设置中添加

STATIC_ROOT = 'my static dir'

然后:

./manage.py collectstatic

【讨论】:

谢谢,LiveServerTestCase 使用生产设置 (DEBUG = True),因此需要先收集静态文件。现在很清楚了 @MartinM 应该是DEBUG = False

以上是关于django应用程序硒测试没有静态文件的主要内容,如果未能解决你的问题,请参考以下文章

Django 检索静态文件的 static() 函数没有给出这样的文件 -error

Django,即使在 collectstatic 之后也没有提供 uwsgi 静态文件

Heroku 上的 Django 静态文件

Django静态文件没有加载。修复settings.py以在相对路径上加载文件

django中的静态文件命名空间

如何在组合 django-react 应用程序中提供静态文件(如图像)