- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想让我的 Django 测试创建和修改媒体文件。因此,就像 Django 测试对数据库所做的一样,我想在运行每个测试之前设置一个空的 MEDIA_ROOT 文件夹。
我想我会创建一个临时文件夹并将 MEDIA_ROOT 指向它。但是,我无法弄清楚将执行此操作的代码放在哪里。在 this example , 一个特殊的 Runner
被创建。运行者设置媒体根并将其拆除。
不幸的是,setup_test_environment
在第一个测试函数运行之前被调用一次,而不是每次运行测试时都被调用。
我尝试创建一个 FileSystemTestCase
类,该类在其 setUp
函数中设置文件系统,并让我的所有测试用例都派生自它。虽然这可行,但它要求每个编写测试用例的人记住调用我的 setUp
方法,因为它不会自动调用。
通常我不会为此烦恼,但忘记调用父 setUp 方法的成本可能非常高 - 如果有人忘记调用并且测试不小心在实时系统上运行,就会发生不好的事情。
编辑:我找到的临时解决方案是同时实现我自己的运行器和基本TestCase
。两者都设置了一个临时的 MEDIA_ROOT,所以如果有人忘记调用我的 setUp
方法,测试将在前一个测试的临时文件夹或运行器设置的文件夹中运行。这可能会导致测试失败,但不会破坏实时数据。
我希望有一个更优雅的解决方案。
最佳答案
在我看来,您正在尝试解决两个不同的问题:
setUp()
)时独立运行(关于MEDIA_ROOT
)。鉴于此,我认为双管齐下的方法是有道理的。您的 setUp()
解决了问题 1。但是,在测试运行器中设置 MEDIA_ROOT
隐藏了您的测试人员做错事的事实。相反,我只关注保护数据:例如,您可以将 MEDIA_ROOT
设置为 None
。这将屏蔽 MEDIA_ROOT
中的真实数据;如果测试人员不使用您的 setUp()
,则更有可能看到错误;并减少代码重复。
一种更稳健的方法是编写您自己的测试运行器,在每次测试之前进行设置(模仿 Django 处理数据库的方式),但这对您的需求来说可能有点矫枉过正。
关于python - 在每次 Django 测试之前初始化 MEDIA_ROOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21841038/
我想知道是否有可能,最好不要太困难,使用 Django DiscoverRunner 在每次测试之间删除我的媒体目录,包括在最开始和最后一次。我对 Django 1.7 中引入的新属性“test_su
如果我使用下面的代码,它将在项目文件夹下找到我的base.css: MEDIA_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file_
你能给我推荐一些我可以理解 MEDIA_URL 和 MEDIA_ROOT 的好文档吗?这真的让我很困惑。 最佳答案 MEDIA_ROOT是文件系统上包含静态媒体的目录的路径。 MEDIA_URL是使静
我有一个 Django 应用程序,它显示由另一个监控应用程序创建的监控视频缩略图(作为各自视频的超链接),其方式比监控应用程序本地显示它们更适合我。 基本上,我有一个脚本,每半小时将文件从监视应用程序
我正在尝试让一个 User 上传文件(以某种语言),让另一个 User 下载文件以便他们翻译。 我已经设置了媒体根目录和媒体 url: MEDIA_ROOT = os.path.join(BASE_D
应该怎么做MEDIA_ROOT和 MEDIA_URL在 ImageField 的上下文中正确设置?我应该如何设置 upload_to ImageField 的参数?评论 MEDIA_ROOT和 MED
我已经通过官方文档和一些文章阅读了有关它们的内容,但我仍然感到困惑。就我现在所知,MEDIA_ROOT用于用户上传的图像和文件,而STATIC_ROOT用于js,css等。至于MEDIA_URL,是否
我对 Django 中的静态文件和媒体文件感到困惑。我在其他地方看到人们可以互换使用它。 我应该什么时候使用 media_root我什么时候应该使用 static_root ? 如果我有网站图片,我应
我正在尝试通过 Django 管理员上传图片,然后在前端页面或仅通过 URL 查看该图片。 注意这一切都在我的本地机器上。 我的设置如下: MEDIA_ROOT = '/home/dan/mysite
我正在尝试通过 Django 管理员上传图像,然后在前端页面或仅通过 URL 查看该图像。 请注意,这一切都在我的本地计算机上。 我的设置如下: MEDIA_ROOT = '/home/dan/mys
我正在使用此 STATIC_ROOT 和 MEDIA_ROOT 配置: STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BA
我想让我的 Django 测试创建和修改媒体文件。因此,就像 Django 测试对数据库所做的一样,我想在运行每个测试之前设置一个空的 MEDIA_ROOT 文件夹。 我想我会创建一个临时文件夹并将
Django 对 MEDIA_ROOT 到底做了什么?我一直不明白。由于 Django 本身不提供静态媒体服务,您必须为其设置 apache 或类似的东西,为什么它关心它位于哪个目录? 最佳答案 您不
我读过 this guide关于在开发过程中使用 Django 提供静态媒体。 我注意到这里没有使用 MEDIA_URL 和 MEDIA_ROOT。为什么?有什么区别? 我尝试用 MEDIA_URL
目前我想在 MEDIA_ROOT 文件夹下创建一个文件并将其保存到 FileField。我在 SO 网站上搜索,尝试了 django-how-to-create-a-file-and-save-it-
我可以使用 FileField 来处理文件,但将它存储在不低于 MEDIA_ROOT/MEDIA_URL 的地方吗?但完全在其他地方。 寻找是为了确保它不可下载;尽管拒绝读取权限可以解决这个问题,但希
我在 settings.py中有一个 Django 1.3 项目,此选项。 SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) STATIC
在我的settings.py 文件中,STATIC_ROOT 和MEDIA_ROOT 目前都指向硬编码位置。例如STATIC_ROOT路径是: /home/ian/projectname/mysite
模型看起来像 class Cars(models.Model): name = models.CharFidle(max_length=255) price = models.Deci
我正在尝试使用 Mongoengine ImageField 上传图像。但是上传测试图片后,我访问http://127.x.x.x:xxxx/media/testimage.png找不到页面. Rai
我是一名优秀的程序员,十分优秀!