问题标签 [django-webtest]
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 - django-webtest:如何测试记住我的登录/浏览器关闭 cookie?
您如何使用 webtest-django 测试 login-remember-me 功能?换句话说,你如何使用 webtest 来测试涉及 expire-on-browser-exit cookie 的东西?我有以下草稿,但它不起作用。似乎必须设置和拆除服务器(如我的测试类下面的代码段),但我不明白如何集成它。似乎没有太多关于StopableWSGIServer
以这种方式使用的信息。
最后,我什至不确定这个功能是否会在生产中运行,因为据我了解,主要浏览器会忽略 expire-cookie-on-browser-exit 请求。那是对的吗?很高兴看到一些关于它的参考资料。
文档顶部、导入和类顶部:
不记得测试:
记住测试:
这是片段,但我不清楚如何在测试本身中使用它。
仅供参考:这是一个完整的登录页面测试,忽略了记住我的功能。这是我基于以上的:
测试功能顶部:
测试功能主要部分:
python - No form exist when I tested changing password in django-allauth
I want to write a test that will test change the password in the application. I use the django-allauth. For testing, I use django-WebTest.
When I run my code, I get the message:
Here is my test code:
django - 使用 django-webtest 进行单元测试时不存在表单
我想编写一个测试来测试更改应用程序中的密码。我使用 django-allauth。对于测试,我使用 django-WebTest。
当我运行我的代码时,我收到以下消息:
我的代码:
django - 如何通过 django-webtest 指定模型表单的提交按钮名称
我正在使用 django-webtest 来自动化 Django 应用程序的功能测试。我的 ModelForms 之一有多个提交按钮。使用 django-crispy-forms 的模板如下所示:
当我通过单击“保存”按钮从网页手动提交表单时,传递到相应视图方法的 request.POST 包含我用来决定在代码中做什么的“save_data”标签。
但是,当我创建一个 django-webtest 测试用例来做同样的事情时,'save_data' 标签不存在,即使我在 form.submit() 中指定它如下:
如何让 django-webtest 在 request.POST 中包含提交按钮的名称?
此外,由于我在同一页面上有多个表单,我目前正在使用 response.forms[1] 来选择感兴趣的表单。但我想改用表单 id。我在 Django 文档中找不到如何将表单 ID(不是字段 ID)分配给 ModelForm。有人可以帮我解决这个问题吗?
我正在使用 Django 1.7、django-webtest 1.7.8、WebTest 2.0.18 和 django-crispy-forms 1.4.0。
django - 如何将表单 ID 分配给 Django ModelForm?
我正在使用 django-webtest 为我的应用程序创建自动化功能测试。
由于我在一个网页上有多个表单,因此我目前正在使用硬编码索引来选择感兴趣的表单。例如:
我想使用表单 id 而不是硬编码的索引来选择感兴趣的表单,以便代码可维护。但是当我在我的代码中打印 school_form.id 时,该值为无。
模板是:
我在 Django 文档中找不到如何将表单 ID(不是表单字段 ID)分配给 ModelForm。有人可以帮我解决这个问题吗?
我正在使用 Django 1.7、django-webtest 1.7.8、WebTest 2.0.18 和 django-crispy-forms 1.4.0。
django - Django WebTest:按值选中/取消选中复选框
我的 WebTest 响应中有一个带有一组复选框(都在相同的字段名称下)的表单,我想根据它们的值取消选中其中的一些。我试过这个:
显然,这是非常 hacky 的代码,必须有更好的方法。此外,这实际上并没有取消选中我想要的框:当我遍历表单中的复选框时,不再有一个具有 value 的元素value-i-want
: value 已设置为None
. 当我提交表单时,它的行为就像没有对表单做任何事情一样。
django - 将 django 网站上传到网络托管服务
您好,关于完成我的第一个django
网站,我不知道如何将其上传到互联网 Bcuz 我想购买一个网络托管服务并运行django
服务器我需要运行一个命令python manage.py runserver
,网络托管服务将如何做到这一点?我应该如何上传我的django
网站?
python - Django 视图:request.data 何时是 dict 与 QueryDict?
我在这个问题上遇到了一些麻烦,request.data 有时是一个dict
(尤其是在测试时),有时是一个QueryDict
实例(在使用 curl 时)。
这尤其是一个问题,因为使用 curl 调用视图时显然存在很大差异,如下所示:
或者像这样使用 django_webtest 客户端:
然后将 QueryDict 转换为这样的字典
在测试中一切正常,因为有request.data
一个dict
,但在生产中视图崩溃,因为new_dict['some_float']
实际上是一个包含一个元素的列表,而不是预期的浮动。
我考虑过像这样解决问题:
这感觉非常错误,因为测试只会测试第 2 行,并且(一些?全部?)生产代码将运行第 4 行。
因此,当我想知道为什么 QueryDict 会以这种方式运行时,我宁愿首先知道 response.data 的原因和时间QueryDict
。以及我如何使用 django 测试来模拟这种行为。生产和测试系统的条件不同总是很麻烦,有时是不可避免的,但在这种情况下,我觉得它可以解决。或者这是与 django_webtest 相关的特定问题?
python - Django模型无法通过管理界面工作
我正在使用 django 项目在拍卖网站上工作。我有一个投标模型。我已经在 admin.py 中注册了模型,但是当我尝试从管理界面出价时,它并没有在主网站页面中更新。但是通过网站,出价正在完美更新,其他模型也运行良好。
模型.py:
管理员.py:
这是views.py中bidsubmit的函数(我在这个文件中导入了Bid模型):
python - 如何修复 Django 测试中的内存泄漏?
最近我开始在 Django (3.1) 测试中遇到一些问题,我终于找到了某种内存泄漏。我通常运行我的套件(目前大约有 4000 个测试),--parallel=4
这会产生大约 3GB 的高内存水印(从 500MB 左右开始)。不过,出于审计目的,我偶尔会运行它--parallel=1
——当我这样做时,内存使用量不断增加,最终超过了 VM 分配的 6GB。
我花了一些时间查看数据,很明显罪魁祸首是,不知何故,Webtest - 更具体地说,它的response.html
and response.forms
:在测试用例期间的每个调用可能会分配几个 MB(通常是两个或三个),这些没有得到在测试方法结束时发布,更重要的是,甚至在TestCase
.
我已经尝试了所有我能想到的东西——gc.collect()
向gc.DEBUG_LEAK
我展示了很多可收藏的物品,但它根本没有释放任何记忆;使用delattr()
各种TestCase
和TestResponse
属性等导致根本没有变化等。
我真的是束手无策,因此任何解决此问题的指针(除了编辑使用 WebTest 响应的数千个左右的测试,这实际上是不可行的)将不胜感激。
(请注意,我也尝试使用guppy
and tracemalloc
,memory_profiler
但都没有给我任何可操作的信息。)
更新
我发现我们的其中一个 EC2 测试实例不受该问题的影响,因此我花了一些时间试图解决这个问题。最初,我试图找到“合理”的潜在原因——例如,缓存模板加载器,它在我的本地 VM 上启用并在 EC2 实例上禁用——但没有成功。然后我全力以赴:我复制了 EC2 virtualenv(使用pip freeze
)和设置(复制 dotenv),并检查了测试在 EC2 上正常运行的相同提交。
瞧!内存泄漏仍然存在!
现在,我正式放弃并将--parallel=2
用于未来的测试,直到一些绝对的大师可以指出我正确的方向。
第二次更新
现在即使使用--parallel=2
. 我想这在某种程度上更好,因为它看起来越来越像是系统问题而不是应用程序问题。没有解决它,但至少我知道这不是我的错。
第三次更新
感谢 Tim Boddy 对这个问题的回复,我试图用chap
它来找出是什么让记忆增长。不幸的是,我无法正确“读取”结果,但看起来一些非 python 库实际上是导致问题的原因。所以,这就是我在运行我知道会导致泄漏的测试几分钟后分析核心的结果:
有趣的一点是,不泄漏的 EC2 实例显示的值与我从中得到的值几乎相同count used
——这表明那些“未知”范围是实际的猪。summarize used
(显示前几行)的输出也支持这一点:
这些单实例分配的大小与我在开始/停止测试时在测试运行程序中添加调用时看到的增量类型非常相似resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
——但它们不被识别为 Python 分配,因此我的感觉。