单元测试界的高富帅,Pytest框架,手把手教学,从入门到精通
前 言
pytest到目前为止还没有翻译的比较好全面的使用文档,很多英文不太好的小伙伴,在学习时看英文文档还是很吃力。本来去年就计划写pytest详细的使用文档的,由于时间关系一直搁置,直到今天才开始写。本文是第一篇,主要介绍pytest的入门使用,后续会分篇针对pytest中的各个功能出详细的使用教程。 一、准备:环境安装
pytest 是 python 中的第三方库,使用之前需要先安装,在命令行中运行以下安装命令 :
pip insatll pytest
检查安装是否成功以及安装的版本,命令行命令如下:
pytest --version
执行上述命令,能够输出版本信息,那就说明安装成功啦。
二、用例编写
当我们通过 pytest 执行用例时,pytest 会自动递归遍历执行路径下所有的目录,根据 pytest 中默认用例的识别的规则,自动收集测试用例。所有在使用 pytest 编写测试用例之前,我们首先需要了解一下 pytest 收集用例时默认的用例识别规则。 1、默认的用例识别的规则1、用例文件:所有文件名为 test_ 开头 或者 _test 开头的文件会被识别为用例文件。 2:用例类,测试文件中每个 Test 开头的类就是一个测试用例类。 3、测试用例:测试类中每个 test 开头的方法就是一条测试用例,测试文件中每个 test 开头的函数也是一条测试用例, 备注:上述默认的用例查找规则,可在 pytest 的配置文件进行修改(后续章节会详细介绍配置文件的使用)
另外 pytest 兼容 unittest,以 unittest 的用例编写规范写的用例,pytest 都能够识别出来
通过了解上述 pytest 中用例识别的规则,可以知道 pytest 中用例编写,能使用函数的形式,也能使用类的形式,那么接下来就分别给大家介绍一下这两种方式编写用例。 2、函数形式编写用例
规则:用例方法名以 test 开头即可
# estcases est_demo1.py def test_demo(): assert 100 == 100
使用命令 pytest 就可以执行测试函数,输出结果如下:
C: estcases>pytest ======================test session starts ====================== platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0 rootdir: C: estcases plugins: testreport-1.1.2 collected 1 item test_demo1.py . [100%] ====================== 1 passed in 0.26s ======================
3、以类的形式编写用例
规则:测试类命名以 Test 开头,用例方法以 test 开头
# test_demo2.py class TestDome: def test_demo1(self): assert 11 == 11 def test_demo(self): assert 22 == 21
命令 pytest 运行上述用例,结果如下:
====================== test session starts ====================== platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0 rootdir: C: estcases plugins: testreport-1.1.2 collected 2 items test_demo1.py .F [100%] ====================== FAILURES ====================== ___________ TestDome.test_demo ____________ self = def test_demo(self): > assert 22 == 21 E assert 22 == 21 test_demo1.py:25: AssertionError ====================== short test summary info ======================= FAILED test_demo1.py::TestDome::test_demo - assert 22 == 21 ====================== 1 failed, 1 passed in 0.53s ======================
上面的运行结果可以看出来,一条用例执行通过,一条执行失败
三、执行测试
在上面我们使用的是 pytest 这个命令去执行测试用例。关于 pytest 执行测试,有两种方式,一种是命令行通过 pytest 这个命令执行,另外在代码中可以通过 pytest.main() 这个方法来执行测试。接下来就和大家分别详细的介绍一下 pytest 执行测试的方式和常用的参数 1、执行参数
测试用例
# 测试用例 class TestDome: def test_demo1(self): print("----测试用例执行-----------") assert 11 == 11
参数 -v : 显示测试的详细参数信息
C: estcases>pytest -s =========================== test session starts =========================== platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0 rootdir: C: estcases plugins: testreport-1.1.2 collected 1 item test_demo1.py::TestDome::test_demo1 ----测试用例执行---输出1-------- ----测试用例执行---输出2-------- PASSED =========================== 1 passed in 0.28s ===========================
2、pytest.main 执行的参数传递
pytest.main 方法执行测试参数传递方式:
所以的参数放在列表中,每个参数就是列表中的一个元素
pytest.main(["-v","-s"])
详细的参数可以使用命令 pytest -h 查看
3、指定执行的测试目录
命令 pytest 测试目录路径
pytest testcase/
pytest 会执行指定目录路径下所有的测试用例
4、指定执行的测试文件
命令 pytest 测试文件路径
pytest testcase/test_demo1.py
pytest 会执行指定测试文件中下所有的测试用例
5、指定执行的测试类
命令 pytest 测试文件::测试类
pytest testcase/test_demo1.py::TestClass
pytest 会执行指定测试类里面所有的测试用例
6、指定执行的测试用例
命令 pytest 测试文件::测试类::测试方法
pytest testcase/test_demo1.py::TestClass::test_method
pytest 会执行指定的测试方法
基本的入门就给大家介绍到这里,从下一篇开始给大家详细介绍 pytest 的相关特性
下面是我当时学习时用过的部分资料,有需要的朋友可以关注并私信我关键词"测试"即可免费领取哟
小米有品众筹职场续命神器!24小时动态监测,白领随身带笔者是一个在CBD上班的小白领,遵循着互联公司盛行的996工作制,熬夜加班是基本常态。每天对着电脑长达七八个小时,项目一旦多了起来,十一二点半夜回家都经常失眠。最近经常出现眼前发黑
广东冬天靠抖?北方人别笑,新晋过冬神器给广东人争口气了北方取暖有暖气,广东取暖全靠抖!虽然才两个月的冬天,广东人的辛酸在这短短的时间里体现得淋漓尽致,在家里穿羽绒是标配。今年冷空气来得早,为了生存,我在小米有品买了一系列防寒用品。广东
拼多多自爆员工受贿200万元涉嫌40亿广告预算据路透社报道,据两名直接知情人士透露,中国电子商务公司拼多多(PinduoduoInc。)已将数字广告公司开域集团CueHoldings一名经理涉嫌贿赂一名员工的案件移交给上海警方
RTX3070游戏本有什么值得推荐,预算1W左右选这几款现在玩游戏的朋友很多,比较多人玩的是手机游戏。不过玩了一段时间之后,就有玩电脑游戏的想法了。挑选款1万左右的3070显卡的电竞笔记本电脑的话,还是有不少挑选的。不过大家也知道显卡市
趣味骑行安全第一多多的超级飞侠九号电动滑板车CiaoBello,我是老房。每个男人都有一个追风的梦,连小朋友也不例外,儿子自两岁起就开始接触各种代步小车了,平衡车,滑板车玩的飞起。男人嘛,对速度的追求是永无止境的,自从上次见
传说法师评测7。5分见面打招呼先放豪火球不少中国玩家对于忍术的概念都来自曾经红极一时的火影忍者。相信不少小伙伴的中二年华里,都尝试过模仿那些忍者结印施放忍术,水遁水龙弹之术雷遁千鸟风遁螺旋丸手里剑,这些名字想必也一定能唤
西方的海神叫波塞冬,那东方的海神是谁?林默娘小说西游记中提到的四海龙王,即东海龙王敖广南海龙王敖钦北海龙王敖顺西海龙王敖闰,是妇孺皆知的海神。中国有一个庞大海神体系。水德星君主管天下水,四海龙王敖广敖钦敖闰敖顺则是水德
刚刚官宣二三孩家庭每月每孩发500元补贴全国首个!四川攀枝花为生育二孩三孩家庭发补贴每月每孩发500元!生育二三孩家庭每月每孩发500元补贴7月28日,四川省攀枝花市召开新闻发布会,公布并详细解读了攀枝花市关于促进人力资
预警来了,2021年税负率金税三期施行以来税收评估的六大预警指标和各行业最新预警税负率,建议会计人员学习收藏!六大预警指标各行业的预警税负率税负率是什么,怎么算?什么情况下企业会被约谈?通常,税务部门会先找
果然,鸿星尔克出事了这些天的微博热搜,都被鸿星尔克霸屏了。起因,是这个快被人遗忘的国货,在河南水灾后,第一时间捐了5000万。因向河南低调捐款5000万物资,霎时间,大家对这个古早品牌好感度一路飙升。
吴亦凡慌了?7月18日晚,都美竹向吴亦凡下达了最后通牒,一副不将其彻底打倒,誓不罢休的态度获得了众多网友的声援。随后,吴亦凡本人及工作室做出回应拒绝一切诽谤言论!图片来自微博但是在回应的微博下