Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Django的LiveServerTestCase修改视图_Django_Monkeypatching_Django Testing_Pytest - Fatal编程技术网

使用Django的LiveServerTestCase修改视图

使用Django的LiveServerTestCase修改视图,django,monkeypatching,django-testing,pytest,Django,Monkeypatching,Django Testing,Pytest,我正在尝试使用Selenium为我的应用程序的前端行为编写测试。但是,我尝试测试的页面从Solr获取数据,我不想为了运行测试而启动Solr实例 我正在使用py.test和我的测试,并且我正在尝试monkeypatch视图,以便对Selenium浏览器发送的数据进行断言 例如,这是一个我预计会失败的测试: def test_searchself、live_服务器、浏览器、monkeypatch: def mockviewrequest: 从django.http导入HttpResponse 断言真

我正在尝试使用Selenium为我的应用程序的前端行为编写测试。但是,我尝试测试的页面从Solr获取数据,我不想为了运行测试而启动Solr实例

我正在使用py.test和我的测试,并且我正在尝试monkeypatch视图,以便对Selenium浏览器发送的数据进行断言

例如,这是一个我预计会失败的测试:

def test_searchself、live_服务器、浏览器、monkeypatch: def mockviewrequest: 从django.http导入HttpResponse 断言真==假 返回HttpResponse'Test' monkeypatch.setattrproject.app.views,“搜索”,mockview browser.getlive_server.url+反向“应用程序:搜索” 当浏览器试图加载“app:search”页面时,我预计这会失败。相反,它加载页面的正常版本,测试成功


有没有办法让这种行为发生?或者有更好的方法来进行这些测试吗?

您正在对视图模块中的视图功能进行修补。任何已经将该视图导入函数引用的位置仍将保留对旧real view函数的引用

Django的urlconf机制在第一个请求(可能发生在另一个测试用例中)导入并使用真实视图配置自己

当您更改视图模块中的函数时,urlconf不会注意到它,因为它已经包含对旧视图函数的引用。Python中的猴子补丁更改名称/引用,而不是函数本身

您正在使用pytest的monkeypatch帮助程序,但模拟库文档中的本指南提供了一些有关在何处应用monkeypatch的好信息:

在这种情况下,我认为最好的办法是使用静态测试数据而不是视图来修补Sorl调用。由于您正在进行硒测试,我认为保留真实视图将是非常好的。如果替换整个视图,实际测试的是什么

如果视图本身包含大量特定于Sorl的代码,那么您可能希望将这些代码分解为一个单独的函数,然后可以轻松地进行修补

如果确实要更改视图,我建议您覆盖urlconf以指向新视图:

您正在修补视图模块中的视图功能。任何已经将该视图导入函数引用的位置仍将保留对旧real view函数的引用

Django的urlconf机制在第一个请求(可能发生在另一个测试用例中)导入并使用真实视图配置自己

当您更改视图模块中的函数时,urlconf不会注意到它,因为它已经包含对旧视图函数的引用。Python中的猴子补丁更改名称/引用,而不是函数本身

您正在使用pytest的monkeypatch帮助程序,但模拟库文档中的本指南提供了一些有关在何处应用monkeypatch的好信息:

在这种情况下,我认为最好的办法是使用静态测试数据而不是视图来修补Sorl调用。由于您正在进行硒测试,我认为保留真实视图将是非常好的。如果替换整个视图,实际测试的是什么

如果视图本身包含大量特定于Sorl的代码,那么您可能希望将这些代码分解为一个单独的函数,然后可以轻松地进行修补

如果确实要更改视图,我建议您覆盖urlconf以指向新视图:

我要替换的视图是由客户端JS获取的JSON视图,但修补Solr调用也有效。mock现在是Python 3的一部分,因此您可以将第一个链接替换为我要替换的视图是由客户端JS获取的JSON视图,但修补Solr调用也有效。mock现在是Python 3的一部分,因此,您可以将第一个链接替换为