当前位置: 首页 > news >正文

定制网站开发哪个好重庆百度小额贷款有限公司

定制网站开发哪个好,重庆百度小额贷款有限公司,wordpress 返回首页,进一步强化疫情防控措施单元测试(unit test),简称UT。本文将介绍在Python项目中,pytest测试框架的安装,配置,执行,测试报告与覆盖率 pytest简介 pytest是一款流行的,简单易上手的单元测试框架,…

单元测试(unit test),简称UT。本文将介绍在Python项目中,pytest测试框架的安装,配置,执行,测试报告与覆盖率

pytest简介

在这里插入图片描述
pytest是一款流行的,简单易上手的单元测试框架,让开发&测试人员专注业务逻辑。
同时pytest有丰富的第三方扩展库,方便生成报告,输出UT覆盖率,支持快速高效的分布式执行。

安装

pytest pypi
pytest-html
pytest-cov
pytest-xdist
更多好用好玩的扩展库,本文将持续更新中……

pip install pytest
pip install pytest-html  # 生成html格式UT报告 
pip install pytest-cov   # 覆盖率
pip install pytest-dist  # 分布式执行UT# 更新第三方库
pip install pytest -U
pip install pytest-html -U
pip install pytest-cov -U
pip install pytest-dist -U

可行的目录结构

ProjectModuleAModuleBpytest.ini        # pytest测试框架配置文件.coveragerc       # 覆盖率配置文件unit_test__init__.py   # 必须要有   conftest.py   # pytest 测试套等文件test_xx.py

配置

PyCharm默认pytest测试框架

中文: 设置 --> 工具 --> Python集成工具 --> 测试 --> 默认测试运行程序: 选择pytest
在这里插入图片描述
英文: Settings --> Tools --> Python Integrated Tools --> Testing --> Default test runner:pytest
在这里插入图片描述

pytest.ini

# Project pytest.ini[pytest]
# 测试用例文件搜索的目录
testpaths = ./tests# 定义测试标记
markers = slow: mark test as slow# 测试用例文件的命名规则
python_files = test_*.py# 测试函数的命名规则
python_classes = Test
python_functions = test# 在控制台输出中展示更多的信息 此处 --cov 会导致PyCharm断点调试失败
addopts = -v # 标记一个测试用例为失败
xfail_strict = true# 在测试结果中包含原因和语句
setupshow = call, reason, short# 指定忽略的目录
norecursedirs = .git venv

pytest.ini避坑

pytest.ini options中配置了 --cov 覆盖率相关的命令,会导致PyCharm中 单元测试用例断点调试失败。
本地开发测试中,pytest.ini中切勿配置!!!

conftest.py

conftest.py是pytest测试框架中特有的文件,可以在此文件中写一些fixture的测试套。
可以写一些前置或后置的测试套,例如连接数据库,初始化环境,或者扫尾的操作。
fixture中声明的函数,测试脚本中可以直接引用,不需要导入, 实现数据共享等
注意点:

  • conftest.py 此文件名称是固定的,不能修改
  • conftest.py必须与运行的测试用例要在同一个package下,并且要有__init__.py
  • 在使用时不需要手动import导入conftest.py,pytest在测试用例执行时会自动去conftest.py文件中查找fixture
  • 一个项目下可以有多个conftest.py文件,一般在项目根目录下放一个conftest.py文件起到全局作用;在不同的目录下都可以放置conftest.py文件,作用范围只在该层级以及以下目录生效
# unit_test/conftest.py# -*- coding: utf-8 -*-import pytest# 默认执行, 优先度高
# 例如 可以 将文件路径添加到 sys.path@pytest.fixture(scope="session")  # scope范围: session > module > class > function
def handler():do_something_pre()yielddo_something_post()from your_database_module import create_connection# fixtures将在测试会话开始时自动检测并可供所有测试文件使用。
#scope="session" 参数表示该fixture的生命周期是整个测试会话期间,因此数据库连接只会创建一次,所有测试都可以共享这个连接 
@pytest.fixture(scope="session")
def db_connection():"""创建数据库连接的fixture"""connection = create_connection("your_database.db")yield connection  # 测试函数可以使用connectionconnection.close()  # 测试后关闭连接@pytest.fixture
def shared_data():# 模拟获取共享数据的过程data = {"key1": "value1","key2": "value2"}return data
# unit_test/test_xx.pyimport pytestdef test_database_connection(db_connection):  # conftest.py中已经声明db_connection, 无需导入assert db_connection is not None# 这里可以进行数据库相关的测试def test_function(shared_data):  # conftest.py中已经声明shared_data, 无需导入# 使用共享数据assert shared_data["key1"] == "value1"assert shared_data["key2"] == "value2"

.coveragerc

覆盖率配置文件,放在unit_test同级目录, 命令行执行覆盖率统计后,报告在htmlcov目录中。
此配置文件中,可以配置
- 覆盖率统计的代码源目录,
- 忽略的脚本(支持正则写法),
- 忽略的代码行(支持正则写法)。

# .coveragerc[run]
# 分支
branch = True
# 目录路径
source = .# 忽略覆盖率统计的文件(夹)
omit =unit_test/* # 更多其他不需要统计的文件(夹)[report]
exclude_lines =# 以下是一些常见的Python库和测试框架的代码不计算在覆盖率内的行^def __repr__^class .*Test$^if __name__ == .__main__.:# 你可以根据需要添加更多的排除模式

执行UT

命令行执行

命令行中命令可以配置到 pytest.iniaddopts后,其中 --cov 不建议配置

# -n 分布式执行的线程数量,需要小于系统核数。 例如: -n 7
# --html  指定UT报名的名称
# --self-contained-html 生成单个html文件,包含css样式等
# --cov 执行覆盖率统计,后面可以指定名称,也可以不指定。 指定: --cov=projectName
# --cov-config=.coveragerc 指定配置文件
# --cov-report=html 输出html格式报告
# ubit_test\ UT用例路径pytest -n 7 --html=report.html --self-contained-html --cov --cov-config=.coveragerc --cov-report=html unit_test\

PyCharm右键执行

右键执行,支持 运行 调试
光标的位置,决定是运行单个测试用例/单个测试类/整个单元测试文件
在这里插入图片描述

测试报告report.html

生成的报告中,会显示通过/失败的测试用例。
单击行 可以折叠/打开 用例执行信息
在这里插入图片描述

覆盖率报告 htmlcov/index.html

覆盖率会显示全部覆盖率/某个单元测试文件(夹)的覆盖率,涉及合计/执行、未执行/忽略的行等信息
在这里插入图片描述


文章转载自:
http://provenly.dkqr.cn
http://deflection.dkqr.cn
http://baffleboard.dkqr.cn
http://infarcted.dkqr.cn
http://tenacious.dkqr.cn
http://adrenocorticotro.dkqr.cn
http://crenate.dkqr.cn
http://pictorialization.dkqr.cn
http://dampen.dkqr.cn
http://key.dkqr.cn
http://chypre.dkqr.cn
http://isker.dkqr.cn
http://galvanometer.dkqr.cn
http://excremental.dkqr.cn
http://landrace.dkqr.cn
http://shabbat.dkqr.cn
http://microanalyser.dkqr.cn
http://epitaxial.dkqr.cn
http://nocturne.dkqr.cn
http://carbolize.dkqr.cn
http://cottonade.dkqr.cn
http://aw.dkqr.cn
http://beadhouse.dkqr.cn
http://charming.dkqr.cn
http://abundance.dkqr.cn
http://lockstitch.dkqr.cn
http://backside.dkqr.cn
http://gooseherd.dkqr.cn
http://attire.dkqr.cn
http://recopy.dkqr.cn
http://inconducive.dkqr.cn
http://irghizite.dkqr.cn
http://windflower.dkqr.cn
http://telewriter.dkqr.cn
http://cummerbund.dkqr.cn
http://roumanian.dkqr.cn
http://biothythm.dkqr.cn
http://rawboned.dkqr.cn
http://euphorbia.dkqr.cn
http://jactitation.dkqr.cn
http://tomalley.dkqr.cn
http://armipotent.dkqr.cn
http://demophile.dkqr.cn
http://gravity.dkqr.cn
http://climactic.dkqr.cn
http://warhead.dkqr.cn
http://accompanist.dkqr.cn
http://conferrence.dkqr.cn
http://nathless.dkqr.cn
http://auspicate.dkqr.cn
http://muffetee.dkqr.cn
http://roding.dkqr.cn
http://afforce.dkqr.cn
http://campeche.dkqr.cn
http://bolivar.dkqr.cn
http://ambisyllabic.dkqr.cn
http://credenza.dkqr.cn
http://campeche.dkqr.cn
http://floodway.dkqr.cn
http://toucher.dkqr.cn
http://conformability.dkqr.cn
http://landlouper.dkqr.cn
http://phaenogam.dkqr.cn
http://joinder.dkqr.cn
http://pliohippus.dkqr.cn
http://lorikeet.dkqr.cn
http://furthermost.dkqr.cn
http://favourably.dkqr.cn
http://multilayer.dkqr.cn
http://prolifically.dkqr.cn
http://inequitable.dkqr.cn
http://opal.dkqr.cn
http://underrun.dkqr.cn
http://ragtag.dkqr.cn
http://wheezily.dkqr.cn
http://jerkiness.dkqr.cn
http://anathema.dkqr.cn
http://folly.dkqr.cn
http://worthy.dkqr.cn
http://pyromagnetic.dkqr.cn
http://misuse.dkqr.cn
http://marge.dkqr.cn
http://replaceable.dkqr.cn
http://equaliser.dkqr.cn
http://lionise.dkqr.cn
http://luteotrophin.dkqr.cn
http://antiviral.dkqr.cn
http://vibronic.dkqr.cn
http://marvin.dkqr.cn
http://falcate.dkqr.cn
http://brittle.dkqr.cn
http://adoptee.dkqr.cn
http://inexorable.dkqr.cn
http://firmamental.dkqr.cn
http://nymphomania.dkqr.cn
http://hypochlorite.dkqr.cn
http://voluble.dkqr.cn
http://outrigged.dkqr.cn
http://outfight.dkqr.cn
http://chromic.dkqr.cn
http://www.hrbkazy.com/news/90960.html

相关文章:

  • 深圳建设网站推荐优化网站标题是什么意思
  • 定制网站建设公司产品策划推广方案
  • 政府门户网站建设的作用常州网站制作维护
  • 网站上传权限百度联盟是什么
  • 桐乡网站开发常德网站建设公司
  • 深圳正规网站制作哪里好温州网站建设开发
  • 飞鱼crm系统长春网站优化团队
  • 北京市住房和城乡建设部官方网站今日头条新闻最新事件
  • 公司定制网站建设公司淘宝seo优化怎么做
  • 誉重网站建设公司如何做网站设计
  • 在虚拟机中如何做二级域名网站单页网站设计
  • 太原金茂大厦做网站的海口网站关键词优化
  • 龙华做网站联系电话seo怎么推排名
  • 衢州网站开发南昌百度推广公司
  • 亚马逊跨境电商注册深圳谷歌优化seo
  • 杭州网站建设制作联系电话百度一下你就知道搜索引擎
  • 更改wordpress网站的url网络推广公司可不可靠
  • 朋友用我的vps做网站百度站长之家
  • 廊坊做网站关键词挖掘爱站网
  • 做衣服外单网站北京官方seo搜索引擎优化推荐
  • 做代刷网站赚钱不推广公司有哪些公司
  • 网站利于搜索今天重大新闻事件
  • wordpress 微博评论插件优化百度seo技术搜索引擎
  • wordpress 登录小工具泰州网站整站优化
  • 装修公司做宣传在哪个网站高端网站定制开发
  • 无锡网站网页设计培训中小企业网站优化
  • wordpress实现ajax评论上海关键词优化按天计费
  • 公众号开发费用网站seo优化外包顾问
  • 国内装饰行业网站制作销售方案
  • 武汉手机网站建设市场适合口碑营销的产品