unittest和pytest的区别

unittest是python的官方库,功能较少,pytest是第三方库,是基于unittest的扩展框架,可支持多种插件,目前有100多种,功能强大。

pytest可兼容unittest写的用例,代码完全不用更改。

一、用例编写方面

1、测试文件:

unittest必须:test*.py,pytest默认定义方式:test_*.py或者*_test.py,也可通过配置文件pytest.ini,配置块[python],配置项pytest_files自定义;

2、测试类:

unittest不要求测试类命名,pytest默认以Test开头,也可自定义;

3、测试方法:

unittest必须以test开头,非test_,pytest默认以test开头,非test_,也可自定义;

4、unittest编写测试用例必须定义为类的形式,且类必须要继承unittest.TestCase类;

pytest可定义为类形式(不用继承什么),也可定义为函数,运行时是以函数去查找的。

小结:

unittest测试文件、方法必须以test开头;

pytest测试文件必须以test开头或结尾,测试方法必须以test开头,测试类必须以Test开头(不考虑自定义情况)

二、运行方面

1、unittest创建运行文件run.py,必须加载测试集合(存放测试用例的文件夹目录),并通过TestRunner创建运行对象,然后运行测试集合(suite,也称为测试套件)

2、pytest:

(1)在命令行中输入“pytest 参数”即可自动查找test开头的测试方法并执行;

(2)创建run.py:pytest.main([参数])

三、用例前后置

1、unittest:

用例级别前置:setUp(),后置:tearDown()

类级别前置:setUpClass(),后置:tearDownClass()

2、pytest提供了模块级、函数级、类级、方法级的setup/teardown,比unittest的setUp/tearDown更灵活。

模块级(setup_module/teardown_module)开始于模块始末,全局的

函数级(setup_function/teardown_function)只对函数用例生效(不在类中)

类级(setup_class/teardown_class)只在类中前后运行一次(在类中)

方法级(setup/teardown)开始于方法始末(在类中)

pytest还可以在函数前加@pytest.fixture()装饰器,在测试用例中装在fixture函数。fixture的使用范围可以是function,module,class,session。

firture相对于setup和teardown来说有以下几点优势:

命名方式灵活,不局限于setup和teardown这几个命名

conftest.py (名字必须是conftest.py)配置里可以实现数据共享,不需要import就能自动找到一些配置,可供多个py文件调用。

scope="module" 可以实现多个.py跨文件共享前置

scope="session" 以实现多个.py跨文件使用一个session来完成多个用例

用yield来唤醒teardown的执行,yield前是前置,yield后是后置

四、断言

unittest提供了assertEqual、assertIn、assertTrue、assertFalse;

pytest只能通过python的关键字assert进行断言

五、参数化

unittest需依赖ddt库;

pytest直接使用@pytest.mark.parametrize装饰器:

@pytest.mark.parametrize("用例方法中用于接收测试数据的参数名",数据)

六、unittest没有而pytest有的功能

1、用例分类执行

(1)unittest默认执行全部用例,也可以通过加载testsuit,执行部分用例。

(2)pytest可以通过@pytest.mark来标记类和方法,通过标签执行指定用例,

具体步骤如下:

(1)注册标签:创建pytest.ini配置文件,创建配置块[pytest],配置项marker,值为标签名

(2)给用例加标签:在用例前加:@pytest.mark.标签名

(3)执行用例:python -m 标签名 或者 python.main(["-m","标签名"])

2、重运行机制

(1)unittest无此功能;

(2)pytest支持用例执行失败重跑,pytest-rerunfailures插件。

pytest --reruns 3 --reruns-delay 2或者pytest.main(["--reruns","3","--reruns-delay","2"])

重运行次数共3次,每隔2秒重运行一次

七、测试报告

1.unittest使用HTMLTestRunnerNew库。

2.pytest有pytest-HTML、allure插件。

最后:下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

  全套资料获取方式:点击下方小卡片自行领取即可

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码小怡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值