问题标签 [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.
pytest-django - 如何使用 pytest-django 设置 postgres 数据库?
我希望 pytest-django 在创建测试数据库时安装 Postgres 扩展。我一直在使用 conftest.py 试图让它工作,但我被卡住了。
我的 conftest.py 位于我的项目的顶层(与 manage.py 相同的目录),并且包含:
但是当我运行它时,我得到:
django - pytest-django:设置用户权限
我使用 pytest 3.0.6 和 pytest-django 3.1.2 为 Django 开发一个库。我有这个非常简单的测试失败,我不明白发生了什么:
以防万一,测试的结果是:
来自 tox.ini 的配置块:
以及来自测试设置的数据库配置:
我究竟做错了什么 ?
python - 基本的 django-pytest 测试
即使只是学习 django 和 testwriting,所以我需要一点确认。我想知道以下测试是它的“正确”拼写。
测试视图.py
表格.py
这是模型
感谢您的帮助和建议。
pytest - 为什么 pytest-xdist 让我的测试运行得更慢,而不是更快?
我正在将一个 ~2000 方法测试套件从鼻子移植到pytest,因为django-nose不能很好地支持并行化。将鼻子换成 pytest 似乎效果很好,并且在添加python_files
它之后pytest.ini
发现几乎所有我们的测试。
最大的缺点是当我运行时-n 4
,测试套件变得比没有-n
标志慢。在整个套件的约 10% 子集上运行,它似乎是大约 20-30% 的平坦减速,尽管我所采用的时间相当嘈杂。作为开销,这在一定程度上是有意义的,但无论我选择多少进程,时间都不会下降。
运行--durations=20
显示每个设置阶段每个进程都需要几秒钟的时间,并且每个其他测试都会稍微变慢。
-vvv
列出运行时的测试,输出几乎完全序列化:
除了少数例外,整个日志几乎总是“开始测试,从工作人员那里获得通过”。这让我相信有些东西正在序列化测试,但我对什么感到困惑。
我尝试禁用除 pytest 本身、pytest-xdist 和 pytest-django 之外的所有 pytest 插件,没有任何变化。
python - 如何使用带有数据的数据库在 django 中运行测试?
我想使用来自 postgres localhost 数据库的数据(已经加载的数据)来测试我的视图。我将 tox 与 pytest 和 pytest-django 一起使用。
我的问题:如何设置/连接到本地数据库以获取所有数据模型模式和数据本身?或者也许使用 factory_boy 更好?或者从 .sql 脚本加载整个数据(如果是,如何)?
我的测试示例:
但我得到的不是状态码 200,而是 404,这表明测试数据库中没有数据。但是当我吃午饭runserver
并去那个视图时,('localhost:8000/foo/bar/123/')
我会得到状态 200 和带有一些数据的 html 网页。
请帮忙!
我在用着:
- Django==1.7.11
- pytest==3.0.6
- pytest-django==3.1.2
- 毒物==2.6.0
selenium - pytest.fixture 函数不能使用 ``yield``。而是编写并返回一个内部函数/生成器,并让消费者调用并对其进行迭代。:
我正在尝试使用 pytest 为我的 Django 项目运行 selenium 并执行夹具设置/拆卸。
我尝试遵循最佳实践,yield
但出现错误:
你知道为什么它不工作吗?
然后后来我使用了另一个运行良好的代码
但不推荐这种方法:
这种方法仍然得到完全支持,但从 2.10 开始建议使用 yield,因为它被认为更简单,更好地描述了自然代码流。
版本注意事项:
python - 在这个测试用例中如何避免访问数据库
如何使用 Factory 对象覆盖 django 模型以避免访问数据库。
模型.py
实用程序.py
所以为了测试,我创建了一个 ApplicationType 工厂
测试.py
因此,您将如何编写一个测试来避免在ApplicationType.objects.get()
代码中间的查询中命中数据库?我可以将“模型”作为参数传递给函数吗?这会是一个好的设计吗?
您可以自由地为应用程序/功能提供替代结构,特别是允许在这种情况下进行更好的测试。
我正在运行 Python3.5、pytest-django 和 factory_boy
python - Django pytest:运行测试用例后清除数据库
我有一个测试(django pytest)需要操作数据库中的对象。问题是在测试之后,数据库是“脏的”,其他测试失败。我看到了一些关于 TransactionTestCase 的东西,但我不明白它是如何与 django 测试一起工作的。
这是我当前代码的一个简单示例:
更新:第二次尝试:我读到TestCase应该使用事务并为每个测试回滚它们。不为我工作:
结果(有趣的部分):
这意味着在 test_a 结束时没有回滚事务。
django - 如何绕过语言请求
在我的每个视图中,我都有一个返回浏览器请求语言代码的函数。但是当我运行我的单元测试时,我的视图出现了错误:
视图.py
测试:
由于我不使用浏览器,如何绕过语言请求
django - 在以 windows 为主机的 vagrant ubuntu vm 上运行 pytest。导入文件不匹配
我想这是一个非常具体的情况,但我会提出这个问题,因为我没有找到相关的答案并且可能对其他人有用。
情况是这样的:
- Windows 是主机操作系统。
有一个 Ubuntu VirtualBox(用 vagrant 创建)。
我的 django 项目文件夹在 windows 和 ubuntu 之间共享。
我在 ubuntu 和 windows 上的 virtualenv 上都安装了 pytest(通过 pytest-django)。
- 如果我
pytest
从 windows virtualenv 运行命令,测试运行得很好 - 但是在 ubuntu vm 终端中,我不能只运行
pytest
命令,因为我收到错误:当前未安装程序 'pytest'。 - 我可以用
python -m pytest
. 但在这种情况下,我得到import file mismatch
错误:
=========================错误=======================
信息很清楚,但我不知道如何克服这个问题。
我使用 python 2.7.9 并且没有pycache文件夹(也没有 ant .pyc 编译文件)。