问题标签 [pytest-django]
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.
python - 只有自定义名称的动态 pytest 方法生成
嗨,我正在尝试 pytest 文档中提到的以下示例,
当我使用 py.test -v 运行时,它会给出如下输出,
在这里,当我生成 html 报告时,当我使用很长的输入数据时,名称太长了。
在上面的例子中,为了避免第一个结果,方法的名称是 [3+5-8]。即它采用元组(3 + 5,8)并将其附加到实际的测试用例方法名称。
现在在我的情况下,元组是 ("short name", "very long string") 而不是 (3+5,8) 所以在我的 html 报告中显示很长。是否可以仅显示“短名称”而不显示第二个值?
django - 模型实例夹具未保存在数据库中
我有一个包含两种方法的测试类,并希望在两种方法之间共享一个保存的模型实例。
我的装置:
我的期望是只接收model
(两种)我的测试方法上的固定装置,并让它保持不变,并保留在数据库中:
我已经--pdb
在 结束时使用它进行了验证test1
,运行Model.objects.all()
返回我创建的单个实例。同时, psql 显示没有记录:
Model.objects.all()
在末尾运行in pdb 会test2
返回一个空列表,考虑到该表为空,这可能是正确的。
- 为什么我的模型没有被持久化,而查询仍然返回一个实例?
model
如果我的夹具被标记scope='class'
并保存,为什么在第二个测试中查询没有返回实例?(这是我最初的问题,直到我发现保存模型对数据库没有任何作用)
使用django 1.6.1
, pytest-django 2.9.1
,pytest 2.8.5
谢谢
python - pytest 有序插件不适用于多个文件的组合
嗨,我正在使用“ http://pytest-ordering.readthedocs.org/en/develop/ ”,当我使用如下装饰器时,订单工作正常,
现在说我有两个文件 test_example1.py 和第二个文件 test_example2.py
在这种情况下,如果我使用此排序,则首先执行来自 file1 和 file2 的 order=1,然后开始在两个文件中执行 order=2
有没有办法指定只在当前正在执行的文件中说订单检查?
python - 使用 LocMemCache 进行选择性 Django pytest
我有一个基于 Django REST 框架的SimpleRateThrottle的自定义 Throttling 类,我想用 pytest 测试我的自定义类。由于我的默认测试设置使用 DummyCache,我想为这个特定的测试模块切换到 LocMemCache(SimpleRateThrottle 使用缓存后端来跟踪计数)。有没有办法为选择性测试切换缓存后端?在夹具中设置 settings.CACHE 似乎不起作用。我还尝试在 SimpleRateThrottle 中模拟 default_cache,但我做错了。
naive_throttler.py
rest_framework/throttling.py
django - 如何覆盖 Django 测试中的数据库设置?
我在 Django 1.8(使用 pytest)上,我有以下配置:
- A
default
和readonly
由 a 管理的数据库MasterSlaveRouter
,根据它们是读取还是写入操作,将 DB 调用定向到一个连接或另一个连接。 - 在我的开发环境中,
settings.DATABASES
字典中的两个条目具有相同的设置(它们只是使用不同的连接,但数据库是相同的)。 - 然而,在我的测试环境中,只有一个
default
数据库。 - 每当保存模型时,我
post_save
都会触发一个信号Foo
。 - 我有一个原子操作(用 装饰
@transaction.atomic
),它修改一个Foo
实例并调用.save()
它两次。由于没有将自定义using
参数传递给装饰器,因此事务仅在default
数据库上处于活动状态。
post_save
回调创建一个指向的Bar
记录,但仅在检查是否存在带有此的记录之后(为了避免)。通过执行以下查询来完成此检查:OneToOneField
Foo
Bar
foo_id
IntegrityError
这在第一次post_save
调用回调时是可以的。创建了一条Bar
记录,一切正常。然而,第二次,即使Bar
在上一次保存中刚刚创建了这样一个实例Foo
,由于过滤是一个读取操作,它是使用readonly
连接执行的,因此already_exists
最终包含该值False
并触发了新记录的创建,最终会抛出一个 IntegrityError ,因为在default
连接上执行创建操作时,已经有一条带有 that 的记录foo_id
。
我尝试将DATABASES
字典从 dev_settings 复制到 test_settings,但这破坏了许多测试。然后我阅读了有关override_settings
装饰器的信息,并认为它非常适合我的情况。然而,令我惊讶的是,它没有奏效。似乎在某些时候,当应用程序启动时,DATABASES
字典(只有default
来自 test_settings 的字典)被缓存,然后即使我改变setting.DATABASES
了,新值也不再被访问。
如何正确覆盖一项特定测试的数据库配置?
python - 如何使用 pytest 测试 Django 模型?
我开始使用 pytest。我已经配置了 pytest,无论如何我找不到使用 pytest 进行 Django 特定测试的资源。如何使用 测试模型pytest_django
?
我已经问过一个关于单元测试的问题,
我想知道如何用 py.test 编写相同的测试?
在模型下方添加和用 unittest 编写的测试。
被测模型是,
和unittest
书面的,
感谢您的任何意见。
django - 在我的本地机器上从 vagrant 运行 webdriver
我在 Windows 机器上运行 vagrant,使用“ubuntu/trusty64”框。我在 vagrant 上运行 selenium 测试(使用 pytest-selenium 和 django)如何设置 webdriver 与我的本地机器(windows)firefox/chrome 一起工作?
是否可以从 vagrant machine 触发我的本地浏览器?我需要 X-server 吗?
django - pytest-cov 一次涵盖许多应用程序
我用许多应用程序构建了 django 项目。现在我想为这些应用程序生成一个覆盖率报告。出于测试目的,我使用 py.test、pytest-django 和 pytest-cov。到目前为止,我只能通过在命令行上手动输入所有应用程序名称来生成报告:
pytest-cov 有没有办法用一个简单的表达式来指定所有的应用程序?
python - pytest异常无类型对象不可调用
在test1.py
我有下面的代码
在conftest.py
我有
当我运行它时,它会启动并关闭浏览器。
但我也得到错误self = <CallInfo when='teardown' exception: 'NoneType' object is not callable>, func = <function <lambda> at 0x104580488>, when = 'teardown'
此外,如果我想运行两个测试test_1
并test_2
使用相同的驱动程序对象,我需要使用范围module
或session
?
python - pytest 范围函数未创建 2 个浏览器实例
我正在尝试并行运行 2 个测试,xdist
因此在此之前我尝试使每个测试独立。
这是我设置浏览器的地方。
这是我正在运行的 2 个测试
但是当我运行测试时,我得到
如您所见,它使用相同的浏览器实例。我想如果我设置scope
它function
会创建 2 个浏览器实例?
如果上述工作最终目标是并行运行测试,例如使用py.test -d --tx 3*popen//python=python2.7 test.py -s
?因此它将同时启动 2 个浏览器。