我想开始将单元测试集成到我的 Django 项目中,并且我发现对视图进行单元测试很棘手,因为 Django 使用函数实现视图的方式。
例如,如果函数有 URL,则每个函数都是 Django 中的视图/页面。
如何对 Django 视图进行单元测试?
我不确定测试视图有多么棘手。
你只需使用测试客户端 https://docs.djangoproject.com/en/dev/topics/testing/tools/#the-test-client.
代码覆盖率很容易。您可以推理 URL 请求如何映射到代码路径并发出适当的 URL 请求。
如果需要,您可以通过创建 Request 对象并检查 Response 对象来“手动”调用视图函数,但这工作量太大。
如果您对代码覆盖率有疑问,这是一件好事。这意味着您的代码无法轻松映射到 URL(这是用户在 Web 应用程序中所能看到的所有内容)。如果您的代码未映射到 URL,您可能应该 (a) 删除代码或 (b) 将其重构为单独的模块。
我们的视图函数之外还有很多模块。我们的视图函数导入这些模块。我们用普通的单元测试来测试这些“视图函数之外”的模块。
这是一个典型的结构。
some_big_product/
|-- __init__.py
|-- settings.py
|-- urls.py
|-- logging.ini
|-- other_global_files.py
|-- an_app_1/
| |-- __init__.py
| |-- urls.py
| |-- models.py
| |-- views.py
| |-- tests.py <-- the generic Django testing
| |-- app_specific_module.py
| |-- app_specific_package/
| | |-- __init__.py
| |-- test_app_specific_module.py <-- unittest
| |-- test_app_specific_package.py
|-- generic_module.py
|-- generic_package/
| |-- __init__.py
|-- tests/
| |-- test_this.py
| |-- test_that.py
| |-- test_all.py <-- not always practical
|-- scripts/
|-- run_tests.sh
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)