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
Python 模拟请求中的字段_Python_Django_Mocking - Fatal编程技术网

Python 模拟请求中的字段

Python 模拟请求中的字段,python,django,mocking,Python,Django,Mocking,有两个框架——Django和Flask。Django使用REST运行项目,而Flask运行编排层 现在有一个测试,它应该检查CRUD方法之一: @mock.patch('requests.post') def test_create(self, request_mock,): request_mock.return_value = self.response_generator.create() response = self.client.post(url_for('foo.l

有两个框架——Django和Flask。Django使用REST运行项目,而Flask运行编排层

现在有一个测试,它应该检查CRUD方法之一:

@mock.patch('requests.post')
def test_create(self, request_mock,):
    request_mock.return_value = self.response_generator.create()
    response = self.client.post(url_for('foo.list', account='bar'),
                                content_type='application/json',
                                data=json.dumps({
                                    "name": "Foo",
                                    "type": "baz"
                                }))
    self.assertEqual(response.status_code, 201)
名称
类型
是必填字段<代码>名称只是一个字符串。但是
type
是指向该类型的url(在REST中),因此当传递
baz
时,它使用magic连接到REST并检索数据

问题是,在运行测试时,Django与REST处于脱机状态,而测试仍然尝试连接到它,导致超时错误

使用ConnectionError:HTTPConnectionPool(host='10.10.10',port=8000):url:/rest/accounts/bar/baz/(由NewConnectionError引起)(':建立新连接失败:[Errno 111]连接被拒绝',))



问题:现在如何模拟
类型
字段,从而不调用脱机服务器?

有用的单元测试的第一个条件是模拟这些测试可能具有的外部依赖关系。与您的情况一样,无论您尝试测试的服务的可用性如何,您都应该能够运行它

虽然我不知道self.client代表什么(因为您没有包含它的代码),但根据您发布的错误响应,我猜您创建了一个客户端

但是,如果您打算在Django项目中测试一个视图,您应该按照建议使用Django测试客户机。根据你的需要,你也应该考虑。 因此,不需要urllib客户机,因为框架为您提供了所需的单元测试工具

也有类似的例子