我可以在不将此应用程序合并到项目中的情况下为我的可重用Django应用程序启动测试吗?
我的应用程序使用了一些模型,因此有必要提供(TEST_)DATABASE_*设置.我应该在哪里存储它们以及如何启动测试?
对于Django项目,我可以运行测试manage.py test; 当我使用django-admin.py test我的独立应用程序时,我得到:
错误:无法导入设置,因为未定义环境变量DJANGO_SETTINGS_MODULE.
这里的最佳做法是什么?
对于我的一些Django视图,我创建了一个执行基本HTTP访问身份验证的装饰器.但是,在Django中编写测试用例时,我花了一些时间来研究如何对视图进行身份验证.这就是我做到的.我希望有人觉得这很有用.
python django unit-testing http-authentication django-testing
我试图决定是否应该使用Django Client或RequestFactory测试我的观点.
我正在使用DjangoRESTFramework创建我的服务器,它非常简单,到目前为止:
class SimpleModelList(generics.ListCreateAPIView):
"""
Retrieve list of all route_areas or create a new one.
"""
queryset = SimpleModel.objects.all()
serializer_class = SimpleModelSerializer
filter_backends = (IsOwnerFilterBackend,)
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
Run Code Online (Sandbox Code Playgroud)
什么是Django的测试之间的差异Client以及RequestFactory和哪种方法更适合用于测试REST服务器(如果有喜欢,除了一个较好的有什么区别)?
我应该用两者创建测试,以便为我的系统提供更好的覆盖吗?
django unit-testing django-views django-testing django-rest-framework
我不是新手测试,但是对于在Django中测试不同层的一堆建议感到非常困惑.
一些人建议(并且他们是对的)避免模型中的Doctests因为它们不可维护...
其他人说不使用灯具,因为它们比辅助功能灵活性差,例如..
还有两组人在争取使用Mock对象.第一组相信使用Mock并隔离系统的其余部分,而另一组则更喜欢停止模拟 并开始测试 ..
我上面提到的,主要是关于测试模型.功能测试是另一个故事(使用test.Client()VS webTest VS等)
是否有任何可维护,可行且适当的方法来测试不同的层?
UPDATE
我知道Carl Meyer在PyCon 2012上的演讲.
在我目前的项目中途,在经历了无数分钟调试的痛苦之后,我决定采用TDD.首先,我计划为每个现有模型编写一组单元测试.但对于只定义属性的模型(即没有其他方法/属性),我不确定我需要测试什么,也不确定.
class Product(models.Model):
name = models.CharField(max_length=50)
description = models.TextField(default='', blank=True)
retails = models.ManyToManyField(Retail, verbose_name='Retail stores that carry the product')
manufacturer = models.ForeignKey(Manufacturer, related_name='products')
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)
以产品为例,单元测试应涵盖哪些内容?应该如何涵盖ForeignKey和ManyToManyField?
我正在为Django应用程序添加一组模板标签,我不知道如何测试它们.我已经在我的模板中使用它们,它们似乎正在工作但我正在寻找更正式的东西.主要逻辑在模型/模型管理器中完成,并已经过测试.标签只是检索数据并将其存储在上下文变量中,例如
{% views_for_object widget as views %}
"""
Retrieves the number of views and stores them in a context variable.
"""
# or
{% most_viewed_for_model main.model_name as viewed_models %}
"""
Retrieves the ViewTrackers for the most viewed instances of the given model.
"""
Run Code Online (Sandbox Code Playgroud)
所以我的问题是你通常测试你的模板标签,如果你这样做你怎么做?
我的Django项目中有一个实用程序函数,它接受一个查询集,从中获取一些数据并返回结果.我想为这个函数写一些测试.有没有'mock'一个QuerySet?我想创建一个不接触数据库的对象,我可以为它提供一个值列表(即一些假行),然后它就像一个查询集,并允许某人对它进行字段查找/过滤/获取/全部等.
有这样的事情吗?
我使用Postgres进行生产和开发,但我想使用sqlite来运行一些测试.我没有看到一种简单的方法来配置一个引擎用于测试,另一个用于开发/生产.我错过了什么吗?
我的网站允许个人在没有登录的情况下通过基于当前session_key创建用户来贡献内容
我想为我的视图设置一个测试,但似乎无法修改request.session:
我想这样做:
from django.contrib.sessions.models import Session
s = Session()
s.expire_date = '2010-12-05'
s.session_key = 'my_session_key'
s.save()
self.client.session = s
response = self.client.get('/myview/')
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
AttributeError: can't set attribute
Run Code Online (Sandbox Code Playgroud)
关于如何在获取请求之前修改客户端会话的想法?我已经看到了这个,它似乎并没有工作
我正在尝试为使用South迁移的Django应用程序创建一些功能测试.
最后,我还将创建斜纹测试.
当我尝试运行现有测试时,由于South迁移的问题,未成功创建测试数据库.(58次迁移中的第7次失败)
似乎为了测试的目的,最好从Django模型构建测试数据库,就像syncdb一样,而不是来自South.
如何设置Django测试套件以从当前模型构建测试数据库而不是尝试使用South?
django ×10
django-testing ×10
python ×4
unit-testing ×3
testing ×2
django-south ×1
django-views ×1
tdd ×1