|
和isort一样,为了配合兼容Black,需要在setup.cfg中额外配置:
- [flake8]
- ignore = E203, E266, E501, W503
- max-line-length = 88
- max-complexity = 18
- select = B,C,E,F,W,T4
mypy静态类型

Mypy是Python的可选静态类型检查器,可以用结合动态(或"鸭子")类型和静态类型优点其他代码的性能。通过Mypy将Python的动态类型便捷性和表现力的优势与静态类型强系统和编译时类型检查相结合,并且生成原生代码,支持通过Python VM运行,可以没有运行时开销的高性能运行。在Python中使用静态类型好处有:
可以使程序更易于理解和维护;
可以帮助编译时调试和发现错误,减少测试和调试。
可以在代码部署到生产环境之前就可以找到难以捕捉的错误。
可以使用pipenv直接安装Mypy:
- pipenv install mypy –dev
mypy动态类型和静态类型一个示例如下:

项目配置
默认情况下,Mypy会递归检查所有类型注释的导入,这会导致库不包含这些注释时出错。需要修改mypy配置仅检查当前代码运行,并忽略没有类型注释的import模块。这也可以在setup.cfg中设置:
- [mypy]
- files=项目,test
- ignore_missing_imports=true
代码测试
程序开发中,除了写代码外,另外一个重要的部分是单元测试。Python测试方面我们要介绍的工具有pytest。

可以使用pipenv添加测试工具包及扩展:
- pipenv install pytest pytest-cov --dev
Pytest框架可以让编写小测试变得容易,而且支持以扩展的方式提供更加复杂的功能。下面是pytest网站的一个简单示例:
- # content of test_sample.py
- def inc(x):
- return x + 1
- def test_answer():
- assert inc(3) == 5
通过以下命令测试
- pipenv run pytest
结果如下:

pytest-cov是pytest的单元测试行覆盖率的插件。pytets-cov的测试结果示例如下:

pytest还有很多的扩展插件:
pytest-cov: 单元测试覆盖率报告
pytest-django: 对Django框架的单元测框架
pytest-asyncio:对asyncio的支持
pytest-twisted: 对twisted框架的单元测框架
pytest-instafail: 发送错误时报告错误信息
pytest-bdd 测试驱动开发工具
pytest-konira 测试驱动开发工具
pytest-timeout: 支持超时功能
pytest-pep8: 支持PEP8检查
pytest-flakes: 结合pyflakes进行代码检查
更多插件可以查看github pytest-dev组织下的项目。
项目配置
项目中,所有的测试都应该放在test目录中,我需要给setup.cfg添加配置:
- [tool:pytest]
- testpaths=test
(编辑:应用网_阳江站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|