Django测试抱怨缺少表问题,怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django测试抱怨缺少表问题,怎么解决相关的知识,希望对你有一定的参考价值。

上网搜索了不少文档,多是Apache环境下的解决方案,我配置的是nginx服务器,所以根据Apache的解决提示进而摸索办法,最终要解决这个问题我这里总结有3步(假设已经配置好admin登录系统):

1. 修改settings.py中STATIC_ROOT为你的static静态文件的物理路径,比如说我静态文件存放在/home/user/www/static中,首先创建www目录下的static文件夹,最后修改settings.py中STATIC_ROOT指向/home/user/www/static。
2. 运行python manage.py collectstatic命令,这将从Django资源包中复制必须的静态文件到STATIC_ROOT指示的static文件夹中,这其中包括admin界面所必须的样式表(style)、图片(image)及脚本(js)等。
这里提示一下,假如不做第1步的话,直接运行这个命令会导致如下的错误提示(最后几行):
File "/usr/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 41, in __init__
self.storage = get_storage_class(settings.STATICFILES_STORAGE)()
File "/usr/lib/python2.7/dist-packages/django/contrib/staticfiles/storage.py", line 23, in __init__
raise ImproperlyConfigured("You're using the staticfiles app "django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting.

其实已经提示需要配置STATIC_ROOT文件了(You’re using the staticfiles app without having set the STATIC_ROOT setting)。
3. 修改Nginx配置,Debian系统下/etc/nginx/nginx.conf或者/etc/nginx/sites-enabled/里面的配置文件,在server节中添加如下内容(请根据实际情况修改):
server
# ... 其余内容略

location /static
root /home/user/www;




此处不修改的话,我测试下来结果貌似默认处理会交由Django,但是依旧会由Django提示Page not found (404)。
完成上面三步后,重新加载相应设置:
invoke-rc.d uwsgi reload
nginx -s reload

好了,基本上问题算是解决了,如果有什么不当的地方欢迎指出。
参考技术A 数据库创建前做个判断

if not exists database
create database

Django单元测试测试视图问题,怎么解决

参考技术A 为什么要进行单元测试? 单元测试保证局部代码的质量 单元测试在隔离的前提下,分别对各个代码单元进行测试,能够达到其他测试不可能达到的测试完整性,从而保证了局部代码的质量。只有局部代码的质量得到了保证,软件产品的质量才可能得到保证。 单元测试改良项目代码的整体结构 要对代码进行单元测试,最起码的前提是代码能够隔离,也就是说,要具有一定的可测性,因此,单元测试是一种有效的约束机制,这种机制将有效地改良代码的整体结构。例如,如果把业务代码直接写在界面类中,将很难进行单元测试,随意的不合理的紧耦合也会造成难于测试,单元测试使这些不好的特性得于及时发现,从而很容易进行修正。可测性是高质量代码的首要特性,不具有可测性,也就无法衡量代码的正确性,有了可测性,也就基本上保证了代码的可扩展性、可复用性。 单元测试降低测试、维护升级的成本 错误越早发现,修复的代价越小,另一方面,如果代码经过了充分的单元测试,集成测试和系统测试就只需要关注设计方面的问题。自动回归测试也大量降低升级维护成本。 使开发过程适应频繁变化的需求 单元测试自然地使开发流程变得“敏捷”,这是因为,整体结构良好的代码具有较好的可扩展性,自动回归测试又能保证修改不会引入新的错误,因此可以适应频繁变动的需求,降低系统分析、架构设计和后期测试的压力。 单元测试有助于提升程序员的能力 对程序员来说,单元测试有利于养成缜密的思维习惯,及提高设计能力。 由谁进行测试?开发部门还是测试部门? 应该由开发部门进行单元测试! 由测试部门进行单元测试的问题 代价高:反复的重新理解代码需要大量的时间,反复的沟通也需要大量的成本。 人手不足:进行单元测试的人员需要具备编码能力,很多软件企业的测试部门都没有足够的人手。 耽误了测试部门对其他测试的准备工作:编码阶段,测试部门要为集成测试、系统测试等做好准备,如果测试部门陷在单元测试的“泥潭”里,很可能影响这些准备工作。 由开发部门进行单元测试的问题 担心影响开发进度:这是现实问题,但自动化的单元测试工具可以解决这个问题。 程序员不习惯做单元测试:这种习惯是可以理解的,但并不难改变,实际上,程序员写程序时都是要进行测试调试的,只不过通常比较零散和随意而已。 测试自己编写的代码,难于保证测试的效果:测试自己写的代码,通常会只测试正常的输入,因此难于保证测试的完整性,但自动化的单元测试工具,可以统计白盒覆盖,甚至提供用于找出遗漏的测试用例的工具,达到很高的测试完整性。只要达到了足够的测试完整性,那么,无论谁测试,效果都是一样的。 无论由哪个部门做单元测试,都要面对一些问题,但开发部门所面对的问题可以借助工具来解决,而由测试部门进行单元测试,要么无法真正实施,要么代价昂贵。 由测试部门进行单元测试为什么成本昂贵? 需多次重复理解程序 测试人员进行单元测试时必须理解程序功能甚至代码逻辑;充分的单元测试通常会发现很多细小的错误,程序员修改代码时,又要再次理解程序。理解程序是很耗费时间的。 反复沟通需要大量时间成本 单元测试发现的错误一般是小Bug,但数量可能很多,修改错误一般由程序员进行,测试人员还要确认,这些反复沟通也需要很多的时间。 不利于发挥单元测试对代码结构的约束机制 如果等编码基本完成再由测试部门进行单元测试,也就不能及时发挥单元测试对代码整体结构的约束效果,测试部门拿到代码时,往往会发现难于测试。 耽误测试部门对其他测试的准备工作: 编码阶段,测试部门要为集成测试、系统测试等做好准备,如果测试部门陷在单元测试的“泥潭”里,很可能影响这些准备工作。 基于以上理由,即使测试部门人手充裕,仅仅从效益来考虑,也不应该由测试部门进行单元测试。如果测试部门本来就人力不充裕(进行单元测试的人员需具备编码能力),勉强由测试部门进行单元测试,结果往往是----没有结果。 由开发部门进行单元测试能保证测试效果吗? 程序员测试自己编写的代码,往往只考虑“正常状况”,这当然会影响测试效果。但如果所用的单元测试工具能够统计各种白盒覆盖率,就能检查测试效果。当然,只做到这一点还是不够的,因为白盒覆盖具有逾后逾难的特点,达到一定的覆盖率后,覆盖率的提升会很困难。如果测试工具功能足够强大,能提供工具帮助用户快速地设计测试用例,达到完整的白盒覆盖,那么测试效果就能得到完全的保证。 实际上,如果没有充分的统计数据,没有达到足够的测试完整性,那么由谁做单元测试,效果都不能保证。 进行单元测试,关键是要达到比较高的输入覆盖,这样,无论由谁测试,效果都是一样的。

以上是关于Django测试抱怨缺少表问题,怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

我的测试中缺少伊斯坦布尔抱怨缺少分支覆盖的确切缺点?

Vigenere cs50 在缺少第二个参数时不会抱怨

无法从 Django 应用程序调用芹菜任务(缺少位置参数)

当我拥有它们时,Py2exe 抱怨缺少 dll?

IntegrityError 中缺少表名(Django ORM)

django,save() 缺少 1 个必需的位置参数“请求”