问题标签 [django-unittest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2929 浏览

python - django unittest 输出

我想通过 python 子进程运行 django unittest,我想将所有数据(尤其是单词 Failure 或 OK)存储在一个变量中。但是,当我使用 subprocess 运行它时,输出仅包含以下部分:

“正在为别名 'default' 创建测试数据库......” “正在为别名 'default' 销毁测试数据库......”

其余的只是出现在屏幕上,这是我不想要的。如何将 django unittest 的所有输出转换为变量。

输出将等于:为别名“默认”创建测试数据库...销毁别名“默认”的测试数据库...

但是在我的屏幕上出现了 django unittest 的整个标准输出。如何将所有输出存储到变量中。

0 投票
0 回答
151 浏览

django - Django 单元测试在项目范围内失败,但在应用范围内通过

我在 Ubuntu 12.10 上使用 Django 1.4 和 Python 2.7。

我有一个包含多个应用程序和数十个单元测试的项目。我们最近在使用@override_settings装饰器时遇到了一个小问题。

这是一些代码:

当测试在应用程序级别运行时,一切都会通过。

但是当我们在项目级别运行时,它会失败。

由于some stuff使用/test/media但模型方法offer.get_contect_dict()使用失败/media,这是我们的实际MEDIA_URL

MEDIA_URL我们可以更改settings/test.py文件中的 ,但这需要使用所有测试/test/media(无论如何这可能是个好主意)。

显然问题出在 Django 中core.files.storage.FileSystemStorage.__init__()——它base_url在测试套件中设置了较早的对象,但在每次测试后不会重新实例化对象(出于明显的原因),因此@override_settings实际上并没有做任何事情。

这是一个错误还是按预期工作?除了通过在to中/test/media设置MEDIA_URL常量来强制使用所有单元测试之外,还有什么优雅的解决方案建议吗?settings/test.py/test/media

0 投票
1 回答
1775 浏览

python - Django 单元测试卡在 E

我在 Django 单元测试框架中遇到了一个奇怪的错误。它以前有效,但出乎意料的是,测试不再有效。

该框架提出:

E是最后一件事,在那里,然后一切都冻结了。

当我只是尝试测试单个应用程序时,它是相同的(没有运行测试)。如果我在崩溃后直接运行测试,我会得到:

明显的问题是,测试数据库永远不会被破坏。

我可能是什么原因 - 什么可能是解决方案?

0 投票
1 回答
493 浏览

django - 让用户使用 django-social-auth 登录

我这样设置了一个单元测试:

只有最后一个断言失败,并且在最后一个断言中将“你已经登录”替换为“你还没有登录”使测试通过,所以看起来我的登录失败了。我猜这是因为我django-social-auth用来允许 OpenId 登录。

我怎样才能以某种方式让单元测试认为我的用户已经登录,所以这user.is_authenticated是真的?我只想测试当用户登录时我的视图是否正确显示,而不是特别关心登录实际工作的单元测试。

0 投票
2 回答
1487 浏览

python - Django 单元测试:测试 HTML 的 CSS 选择器?

关于 Rails 框架,我发现了一些我非常喜欢的东西,能够使用 css 选择器非常轻松地测试模板的输出,例如测试页面中有多少“li”元素,如果存在具有特定 ID 的元素, 抄送。

与这些工具相比,AssertContains 感觉非常有限,请查看: http ://guides.rubyonrails.org/testing.html#testing-views

如何用 django 实现类似的功能?是否有实现 CSS 选择器的 python 库?

0 投票
0 回答
1176 浏览

python - django 单元测试登录用户导致“重复条目”错误

我有以下测试

如果我只有一种测试方法(test_test),则测试有效。但是当我有多个方法(test_test2)时,我不断收到错误“IntegrityError:无法加载web.CustomProfile(pk = 1):(1062,“密钥'id_user'的重复条目'1'”)“。

错误跟踪如下。我真的很感激任何帮助。

.问题安装夹具'/Users/ruixia/public_html/x/project/web/fixtures/data.json':追溯(最近一次通话):

文件“/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/core/management/commands/loaddata.py”,第 196 行,在句柄 obj.save(using=using)

文件“/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/core/serializers/base.py”,第165行,保存models.Model.save_base(self.object, using=using ,原始=真)

文件“/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/db/models/base.py”,第 551 行,在 save_base 结果 = manager._insert([self], fields=fields , return_id=update_pk, using=using, raw=raw)

_insert return insert_query(self.model, objs, fields, **夸格斯)

文件“/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/db/models/query.py”,第 1576 行,在 insert_query return query.get_compiler(using=using).execute_sql(return_id )

文件“/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/db/models/sql/compiler.py”,第910行,在execute_sql cursor.execute(sql, params)

文件“/Users/ruixia/virt_env/x/lib/python2.7/site-packages/django/db/backends/mysql/base.py”,第 114 行,在执行中返回 self.cursor.execute(query, args)

文件“/Users/ruixia/virt_env/x/lib/python2.7/site-packages/MySQLdb/cursors.py”,第201行,在执行self.errorhandler(self, exc, value)

文件“/Users/ruixia/virt_env/x/lib/python2.7/site-packages/MySQLdb/connections.py”,第 36 行,在 defaulterrorhandler 中引发 errorclass,errorvalue IntegrityError: Could not load web.CustomProfile(pk=1) :(1062,“重复条目'1'键'id_user'”)

0 投票
3 回答
5528 浏览

python - Django 单元测试客户端响应具有空上下文

我有一个单元测试在一个断言中失败,该断言在同一测试用例类中的另一个测试中通过。

这是通过的测试:

这是失败的测试:

在第二个测试中,我得到了错误TypeError: 'NoneType' object has no attribute '__getitem__'

如果我执行第二个测试

我得到错误TypeError: argument of type 'NoneType' is not iterable。我已经在第二个测试中通过打印语句确认 response.content 包含我希望获得的页面,状态代码是正确的,并且模板是正确的。但是响应的上下文始终None在第二个测试中。

我正在通过标准的“python manage.py test ...”接口运行我的 Django 单元测试,所以我不相信我遇到了“ context is empty from the shell ”的问题。

这是怎么回事?

编辑:

如果我添加print type(resp.context['a_formset'])到每个测试中,对于我得到的工作测试<class 'django.forms.formsets.AFormFormSet'>。对于非工作测试,我TypeError: 'NoneType' object has no attribute '__getitem__'再次获得。

0 投票
0 回答
142 浏览

django - 在依赖项目上运行 selenium 测试

我有两个 Django 项目(项目 A 和项目 B),它们使用相同的代码库并具有单独的设置文件(我们使用 contrib.sites 框架)。这些项目也使用相同的数据库。

项目 A 依赖于项目 B:如果用户想从项目 A 登录,他将被重定向到项目 B 视图(以执行某些操作),然后返回到项目 A。一切正常,但当涉及测试。

我们有一个测试套件,其中包括一些 Selenium 测试。要测试项目 A 的登录视图,项目 A 和 B 在 selenium 测试运行时都必须处于活动状态。通常一个人会做

接着

但是两个项目应该使用相同的数据库,并且项目 A 的测试数据库是在运行时创建的。

我怎么解决这个问题?测试运行器有什么办法也可以部署项目 B 吗?

当时我们使用标准的 Django 测试运行器,但是进行切换(例如切换到鼻子或您建议的任何内容)不会有问题。

0 投票
1 回答
346 浏览

django - Django反向逆

Django 有逆向方法django.core.urlresolvers.reverse()吗?

我想要一个f(x)这样的功能f(django.core.urlresolvers.reverse('shadowfax')) == 'shadowfax'

有人对这是否是为调用的方法编写单元测试的正确方法有什么要说的.reverse()吗?

0 投票
1 回答
571 浏览

python - 在一个 Django 应用程序中模拟装饰器

我想测试

  • 如果视图装饰器正常工作
  • 如果调用了正确的视图

所以,这里的装饰器get_object和视图featuresmyapp.views.

我试着嘲笑这个:

这没有显示任何内容,好像没有调用模拟对象,尽管我想它应该是。

如何正确模拟装饰视图?