说明
相信之前接触过的unittest的各位对setup、teardown都不会陌生,当使用了setup、teardown之后,每个用例执行之前和执行结束后都会去执行一次。这就好比是开车一样,只要我开车了,都要先对车进行启动,然后到达目的地之后对车进行熄火。这样做的好处就是在我们进行自动化测试用例执行之前进行测试准备和初始化操作,测试结束后进行清理操作,比如说一些数据库的还原、浏览器的关闭等。
说了这么多,pytest也有这种功能和语法,而且种类比unittest更加的丰富,使用起来也更加的方便快捷。
级别介绍
pytest的用例级别主要分为以下几类:
1、模块级:setup_module/teardown_module
2、函数级:setup_function/teardown_function
3、类级:setup_class/teardown_class
4、方法级:setup_method/teardown_method
5、类里面的级别:setup/teardown
下面通过代码来进行演示说明。
- 模块级:setup_module/teardown_module
setup_module/teardown_module是适用于全局的,它适用于模块的始末,换句话说就是整个.py文件只运行一次,只要有一个.py文件运行,那就会执行一次setup_module和teardown_module,代码和运行结果如下:
# -*-coding:utf-8 -*-
#test_moudle.py
import pytest
def setup_module():
print('\nsetup_moudle:整个.py模块只能执行一次')
print('比如:所有用例开始前只打开一次浏览器')
def teardown_module():
print('teardown_moudle:整个.py模块只执行一次')
print('比如:所有的用例结束只最后关闭浏览器')
def test_one():
print('正在运行test_one函数')
x = 'hello'
assert 'h' in x
def test_three():
print('正在运行test_three函数')
a = 'hello'
b = 'hello world'
assert a in b
if __name__ == '__main__':
pytest.main(['-s','test_moudle.py'])
- 函数级:setup_function/teardown_function
setup_function/teardown_function是针对于用例的,每个用例执行前、执行结束后都会执行一次setup_function、teardown_function,代码和运行结果如下: