问题标签 [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.
django - 如何为此进行单元测试?
我如何在 django 中测试这段代码以及我需要安装什么才能测试它
django - 如何在执行 test.py 时解决此错误?
我尝试运行此命令:
下面是我的test.py:
pytest - 在 py.test 中实现 setUpTestData 样式行为的正确方法是什么
我有一堆固定的东西,我想为测试类做一次,但我也不希望相关的测试弄乱它。
我还没有真正得到 py.test 固定系统,所以我不知道应该如何完成。
在 vanilla Django 中,这些东西是通过 setUpTestData 实现的,它允许您在 DB 中为测试类创建一些固定装置。然后在每个测试用例开始时,它会删除一个事务保存点,并在每个测试结束时重置到该保存点。(这是除了围绕整个班级进行交易之外,以便在最后留下一个干净的数据库。)
我可以通过继承 Django 的 TransactionTestCase 来获得这个功能,但是 pytest-django 似乎想要在没有它的情况下运行,并且我已经实现了我需要的所有其他东西而不这样做。
python - Pytest 中的 HTTP 请求测试
所以我对一般的编码非常陌生,我编写了以下代码来将 HTTP 请求传递给 Python/Django 方法,以使用 Pytest 测试它们:
但我在运行它们时不断收到错误消息:
我知道这段代码可能有很多错误,但克服这个障碍会让我感动。
python-3.x - 如何将参数传递给pytest的setup_method
我需要编写一些测试用例来测试用户的权限。在每个测试用例中,UserA 具有不同的权限并进行检查。我想使用管理员角色在 setup_method 中为 userA 提供不同的权限。如何将参数传递给 setup_method 以便在每个测试用例开始之前,我可以有不同的测试用例?我有类似以下的内容,但不确定如何将参数传递给 setup_method。
python - 如何不回滚在类范围的 pytest-django 夹具中创建的数据库事务
我正在将 pytest 与 Django 一起使用(通过pytest-django),我想知道是否有可能有一个范围固定装置class
在数据库中创建一些模型,然后在每次测试结束时不删除这些模型。
例如;
这只是一个简化的示例,在我的实际代码中,夹具expensive
实际上正在做一些需要一些时间的事情(我实际上正在使用参数化测试,但我想这不会有任何区别)。我希望夹具中创建的数据expensive
一旦超出类的范围就会回滚,以免干扰其他测试。
似乎我正在尝试做的事情可能可以使用夹具django_db_blocker但是我无法让它按照我想要的方式运行。
python - pytest 3.1.0 不检测插件并且不报告关于它的错误
我已经设置了 pytest (3.1.0) 和 pytest-django (3.1.2) 来运行一些测试。这在 Ubuntu 17.04 和 OSX 10.12.2 上效果很好,但在我们的测试环境(Ubuntu 12.04.5)上却不行。
查看时pytest --version
,在一切都按预期工作的环境中检测到该插件,但在测试服务器上未列出该插件。这会导致错误,例如ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
工作环境的输出:
在搜索详细信息时,我发现了一些关于抑制 pytest 插件的导入错误的 pytest 问题(fi https://github.com/pytest-dev/pytest/issues/1307),但这些是指行为的变化对于 pytest 3,此类问题会出现错误或警告。但是除了 django 本身的 ImproperlyConfigured 异常之外,我没有看到任何错误。完整输出:
ubuntu/precise64
我可以毫无问题地在一个流浪的盒子里重现这个。我尝试将 python 2.7 升级到更新版本,但也没有任何区别。
那么如何追踪阻止pytest-django
插件加载的错误呢?
python - 测试 Django 模板是否正确呈现
我有一个 index.html,其中包含一个 nav.html,它有一个指向不存在的路由名称的 url 标签。当我运行索引视图测试时,响应代码为 200,测试通过。如果我manage.py runserver
导航到浏览器中的索引,我会收到一个 NoReverseMatch 错误消息页面。当我从 index.html 中删除包含并将 nav.html 的内容直接放入 index.html 时,测试按预期失败。
我如何编写一个可以在包含的模板中发现问题的测试?
导航.html
索引.html
视图.py
测试.py
设置.py
virtualenv(缩写):
python - 单元测试 django 序列化程序
我正在尝试对序列化程序进行单元测试,但是当我执行 serializers.is_valid() 时,我在获取预期的错误消息时遇到了问题。
代码:
序列化程序.py
test_serializer.py
此时,当我检查 serializer.is_valid() 时,结果为 False,当我检查 serializer.errors 时出现以下错误
我怎样才能解决这个问题?有什么想法吗?
提前致谢
PS:我也尝试了 serializer = RandomSerializer(data=val_dict) 但这甚至没有将值填充到 serializers.data
python - pytest 断言消息自定义与变量自省
在pytest 文档中,它说您可以在assert
失败时自定义输出消息。我想assert
在测试返回无效状态代码的 REST API 方法时自定义消息:
所以我试着把这样的一段代码放进去conftest.py
但问题是left
实际值,response.status_code
所以它是 aint
而不是 a Response
。但是,默认输出消息会抛出类似:
E 断言 400 == 201 E + 其中 400 = .status_code
说错误 400 来自status_code
对象的属性Response
。
我的观点是对被评估的变量有一种内省。那么,如何以舒适的方式自定义断言错误消息以获得与上面发布的示例类似的输出?