python – 在每个Django测试之前初始化MEDIA_ROOT
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 在每个Django测试之前初始化MEDIA_ROOT,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1509字,纯文字阅读大概需要3分钟。
内容图文
![python – 在每个Django测试之前初始化MEDIA_ROOT](/upload/InfoBanner/zyjiaocheng/778/f69f49eb8a374197a2f56abcdcacc538.jpg)
我想我的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全部内容,希望文章能够帮你解决python – 在每个Django测试之前初始化MEDIA_ROOT所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。