pytest(四)在pytest中也有传统的setup/teardown哦

传统测试框架中,类似setup和teardown的功能是必不可少的。做过测试的小伙伴们肯定知道,在运行一条测试用例时,总会在测试前要做一些预配置(configuration)或者预条件(precondition),然后在测试完后就要恢复(restore)到初始状态。那么setup和teardown在你的自动化代码里就会做这些事。

其实setup/teardown也保证测试用例的独立性,尤其在自动化测试用例编写时,独立性尤其重要。

刚开始做自动化测试的同学们,在设计用例时很容易犯一个错误——连续跑一套测试用例没问题,但是跑单个用例,就报错了,原来报错的case的配置依赖之前的。

Unittest支持类级别setupclass/teardownclass和类方法级别setUp/testDown, Pytest也有类似的接口,而且支持的scope更加多。

pytest(四)在pytest中也有传统的setup/teardown哦_第1张图片

01

函数级别之setup/teardown

我们先从简单的函数级别开始,Pytest 提供 setup_function/teardown_function,它对测试函数有效,每个测试函数前后调用一次。

test_add.py


pytest(四)在pytest中也有传统的setup/teardown哦_第2张图片

运行结果:

pytest(四)在pytest中也有传统的setup/teardown哦_第3张图片

02

类级别之setup/teardown

对于类级别,Pytest 提供 setup_class/teardown_class,  对类有效,类中前后调用一次。

test_minus.py


运行结果:

pytest(四)在pytest中也有传统的setup/teardown哦_第4张图片

03

类测试方法之setup/teardown

对于类测试方法,Pytest提供setup_method/teardown_method和setup/teardown(这个与unittest一样),两者效果没有区别,用一种即可。对类测试方法有效,每个测试类测试方法前后调用一次。这里我们举例setup_method/teardown_method

test_minus.py


pytest(四)在pytest中也有传统的setup/teardown哦_第5张图片

运行结果:

pytest(四)在pytest中也有传统的setup/teardown哦_第6张图片

04

模块级别之setup/teardown

Pytest还提供模块级的, 接口名字是setup_module/teardown_module,模块前后调用一次。

test_add.py


运行结果:

pytest(四)在pytest中也有传统的setup/teardown哦_第7张图片

综合运用

最后我们来个大乱炖,把所有用法集中在一个文件里。

test_all.py


pytest(四)在pytest中也有传统的setup/teardown哦_第8张图片
pytest(四)在pytest中也有传统的setup/teardown哦_第9张图片

运行结果:

pytest(四)在pytest中也有传统的setup/teardown哦_第10张图片

如果你有使用unittest的经验,那么上述对你来说是非常容易接受的,但是很可惜,我们并不推荐使用它们,因为pytest提供了一个更强大的武器,我们会在下一篇中为大家介绍。


阅读测试理论,测试管理,自动化测试和持续集成的更多文章,可以关注本人的公众号哦,希望和能大家一起进步。

微信公众号是LightSoftwareTest

你可能感兴趣的:(pytest(四)在pytest中也有传统的setup/teardown哦)