Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 如何在url规则中对视图函数进行单元测试?_Python_Unit Testing_Flask - Fatal编程技术网

Python 如何在url规则中对视图函数进行单元测试?

Python 如何在url规则中对视图函数进行单元测试?,python,unit-testing,flask,Python,Unit Testing,Flask,我已定义以下路由url规则,并希望对其进行测试 app.add_url_rule('/api/v1.0/worker/bbc-stage-0', 'stage0', view_func=BBCStage0TaskView.as_view('bbc_stage0_taskview')) 如果路径正确,请执行以下测试: def test_url_to_view_stage0_exists(self): self.assertEqual(api.app.url_map._rules_

我已定义以下路由url规则,并希望对其进行测试

app.add_url_rule('/api/v1.0/worker/bbc-stage-0', 'stage0', view_func=BBCStage0TaskView.as_view('bbc_stage0_taskview'))
如果路径正确,请执行以下测试:

def test_url_to_view_stage0_exists(self):
        self.assertEqual(api.app.url_map._rules_by_endpoint['stage0'][0].rule, '/api/v1.0/worker/bbc-stage-0')

我还没有找到一种方法来测试
view\u func
是否指向正确的类。有没有办法测试这一点?

Werkzeug的
Map
将路径映射到端点。Flask应用程序将这些端点映射到中的查看函数,在中使用。因此,要检查连接到端点的视图,只需从该映射获取它。由于您使用的是基于类的
视图
,因此每个实例化的实际视图函数都不同,因此您可以测试
视图_类
是否相同

self.assertEqual(api.app.view_functions['stage0'].view_class, BBCStage0Task)

这是一种毫无意义的测试,因为您基本上是在测试烧瓶内部,烧瓶已经对其进行了测试。通过简单地使用测试客户机查看对url的请求是否返回您期望的结果,您自己的测试将更加有用

with api.app.test_client() as client:
    rv = client.get('/api/v1.0/worker/bbc-stage-0')

# assert something about the response, such as 'expected string' in rv.data