传统测试框架中,类似setup和teardown的功能是必不可少的。做过测试的小伙伴们肯定知道,在运行一条测试用例时,总会在测试前要做一些预配置(configuration)或者预条件(precondition),然后在测试完后就要恢复(restore)到初始状态。那么setup和teardown在你的自动化代码里就会做这些事。
其实setup/teardown也保证测试用例的独立性,尤其在自动化测试用例编写时,独立性尤其重要。
刚开始做自动化测试的同学们,在设计用例时很容易犯一个错误——连续跑一套测试用例没问题,但是跑单个用例,就报错了,原来报错的case的配置依赖之前的。
Unittest支持类级别setupclass/teardownclass和类方法级别setUp/testDown, Pytest也有类似的接口,而且支持的scope更加多。
01
函数级别之setup/teardown
我们先从简单的函数级别开始,Pytest 提供 setup_function/teardown_function,它对测试函数有效,每个测试函数前后调用一次。
test_add.py
运行结果:
02
类级别之setup/teardown
对于类级别,Pytest 提供 setup_class/teardown_class, 对类有效,类中前后调用一次。
test_minus.py
运行结果:
03
类测试方法之setup/teardown
对于类测试方法,Pytest提供setup_method/teardown_method和setup/teardown(这个与unittest一样),两者效果没有区别,用一种即可。对类测试方法有效,每个测试类测试方法前后调用一次。这里我们举例setup_method/teardown_method
test_minus.py
运行结果:
04
模块级别之setup/teardown
Pytest还提供模块级的, 接口名字是setup_module/teardown_module,模块前后调用一次。
test_add.py
运行结果:
综合运用
最后我们来个大乱炖,把所有用法集中在一个文件里。
test_all.py
运行结果:
如果你有使用unittest的经验,那么上述对你来说是非常容易接受的,但是很可惜,我们并不推荐使用它们,因为pytest提供了一个更强大的武器,我们会在下一篇中为大家介绍。
阅读测试理论,测试管理,自动化测试和持续集成的更多文章,可以关注本人的公众号哦,希望和能大家一起进步。
微信公众号是LightSoftwareTest