Python 模拟请求中的字段
有两个框架——Django和Flask。Django使用REST运行项目,而Flask运行编排层 现在有一个测试,它应该检查CRUD方法之一: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
@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客户机,因为框架为您提供了所需的单元测试工具
也有类似的例子