常用python编程软件推荐 python编程软件用哪个好( 二 )


[mypy]files=best_practices,testignore_missing_imports=true现在我们可以运行mypy:
pipenv run mypymypy 的速查表:https://mypy.readthedocs.io/en/latest/cheatsheetpy3.html
使用pytest和pytest-cov进行测试使用pytest编写测试非常容易,并且消除编写测试的阻力,意味着我们会编写更多的测试!
pipenv install pytest pytest-cov --dev以下是pytest网站的一个简单示例:
# content of test_sample.pydef inc(x): return x + 1def test_answer(): assert inc(3) == 5执行示例:
$ pipenv run pytest=========================== test session starts ============================platform linux -- Python 3.x.y, pytest-5.x.y, py-1.x.y, pluggy-0.x.ycachedir: $PYTHON_PREFIX/.pytest_cacherootdir: $REGENDOC_TMPDIRcollected 1 itemtest_sample.py F [100%]================================= FAILURES =================================_______________________________ test_answer ________________________________ def test_answer():> assert inc(3) == 5E assert 4 == 5E + where 4 = inc(3)test_sample.py:6: AssertionError========================= 1 failed in 0.12 seconds =========================所有的测试都应该放在 test目录中,所以将这个配置添加到 setup.cfg:
[tool:pytest]testpaths=test我们还想检查测试覆盖了多少代码 。创建一个新文件 .coveragerc,用来返回应用程序代码的覆盖率统计信息,我们再次假设代码位于 best_practices模块中:
[run]source = best_practices[report]
exclude_lines = # Have to re-enable the standard pragma pragma: no cover # Don’t complain about missing debug-only code: def __repr__ if self .debug # Don’t complain if tests don’t hit defensive assertion code: raise AssertionError raise NotImplementedError # Don’t complain if non-runnable code isn’t run: if 0 : if __name__ == .__main__.:
我们现在可以运行测试并报告覆盖率
pipenv run pytest --cov --cov-fail-under=100如果对应用程序代码的测试覆盖率低于100%,则会失败 。
pre-commit 的 Git 钩子Git钩子允许您在任何时候提交或推送时运行脚本 。这就可以支持我们在每次提交/推送时,自动运行所有的格式化和测试 。pre-commit可以帮助我们轻松配置这些钩子:
在提交代码审查之前,Git钩子脚本可以帮助识别简单问题 。每次提交时运行钩子,自动指出代码中的问题,例如缺少分号,尾随空格和调试语句 。在代码审查之前指出这些问题,可以让代码审查者专注于代码架构的变化,而不是浪费时间检查格式问题 。
在这里,我们配置在提交Python 文件修改时,执行上述所有检查,并且仅在推送时运行pytest覆盖率测试,因为耗时可能较长 。创建一个新文件 .pre-commit-config.yaml:
repos:- repo: local hooks: - id: isort name: isort stages: [commit] language: system entry: pipenv run isort types: [python] - id: black name: black stages: [commit] language: system entry: pipenv run black types: [python] - id: flake8 name: flake8 stages: [commit] language: system entry: pipenv run flake8 types: [python] exclude: setup.py - id: mypy name: mypy stages: [commit] language: system entry: pipenv run mypy types: [python] pass_filenames: false - id: pytest name: pytest stages: [commit] language: system entry: pipenv run pytest types: [python] - id: pytest-cov name: pytest stages: [push] language: system entry: pipenv run pytest --cov --cov-fail-under=100 types: [python] pass_filenames: false如果你需要跳过这些钩子,你可以运行 git commit–no-verify或 git push–no-verify
使用cookiecutter生成项目我们已经看到了理想项目都使用了哪些工具,可以将其固化为一个模板,只需要1个命令 即可生成新项目:
pipx run cookiecutter gh:sourceryai/python-best-practices-cookiecutter填写项目名称和仓库名称,即可使用模板为你生成项目 。
要完成设置,请按照下列步骤操作:


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: