pytest和unittest区别

pytest安装和查看

安装:pip install pytest
查看:pip show pytest

pytest和unittest区别

pytest

1、自动识别测试用例,以test_开头或以_test结尾(通常使用第一种)。
2、简洁的断言语句,使用assert表达式即可。
3、有测试会话、测试模块、测试类、测试函数级别的fixture。
4、有非常丰富的插件,目前600+,比如allure报告插件。
5、测试用例不需要封装在测试类中。

unittest

1、需要引入TestSuite来主动加载测试用例。
2、断言语句需要用self.assert*
3、unittest当中是测试类、测试函数级别的fixture。
4、无插件。
5、需要自定义类并且继承TestCase。

pytest如何自动识别测试用例

原则:先搜索到的py文件中的用例,先执行。在同一py文件当中,按照代码顺序,先搜索到的用例先执行。
搜索根目录
默认从当前目录中搜集测试用例,即在哪个目录下运行pytest命令,则从哪个目录当中搜索。
搜索文件
符合命名规则 test_*.py 或者 *_test.py 的文件。
在满足以上条件的文件中识别用例的规则
1、以test_开头的函数名;
2、以Test开头的测试类(没有__init__函数)当中,以test_开头的函数

需要遵守的规则

1、.py 测试文件必须以test_开头(或者以_test结尾)
2、测试类必须以Test开头,并且不能有 init 方法
3、测试方法必须以test_开头
4、断言必须使用 assert
5. 断言的区别,可直接使用符号“==”、“!=”、“<”、“>”、“>=”、"<=" 、in、not in,比
unittest断言更简单
unittest常用断言
unittest常用断言

fixture

pytest 提供的 fixture 实现 unittest 中 setup/teardown 功能,可以在每次执行case
之前初始化数据。不同点是,fixture 可以只在执行某几个特定 case 前运行,只需要在
运行 case 前调用即可。比 setup/teardown 使用起来更灵活。
@pytest.fixture()
fixture的作用域有四个session/package–>module–>class–>function,
session:同一个目录下,所有的文件都只执行一次
module:一个文件就会执行一次
class:一个类就会执行一次
function:一个函数就会执行一次(用的话直接把函数名做参数传到用例方法括号内),
可省略不写
设置autouse=True的情况下,所有方法均会自动调用;如果同时设置scope为class,
则在类中多个方法也仅调用一次

配置文件

pytest.ini: pytest的主配置文件,可以改变pytest的默认行为;
conftest.py: 此文件的fixture将作用于该文件所在的目录以及所有子目录。

部分插件

测试报告:pytest -html
pytest --html=report.html
失败case重复执行:pytest-rerunfailures
pytest -s test_one.py --html=report.html --reruns 1 --reruns-delay 1
–reruns 1是指重试几次,后面跟的值是重试的次数,–reruns-delay 1是指重试的
间隔时间,当失败后,需等待多久时间进行下一次的重试,后面跟的数据单位是
秒,每隔一秒重试。
-s运行显示内部的打印信息
多CPU分发:pytest-xdist
pip install -U pytest-xdist
pytest test_se.py -n NUM 其中NUM表示进程

运行模式

运行所有case
pytest test.py
运行tes.py文件中的TestClassOne这个class下的两个cases
pytest test.py::TestClassOne

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值