Pytest系列(3)- setup和teardown的使用
前置方法和后置方法
- 模块级别:setup_module、teardown_module,运行在模块始末,全局的(优先级最高)
- 函数级别:setup_function、teardown_function,只对函数用例生效(不在类中)
- 类级别:setup_class、teardown_class,在类中前后运行一次
- 方法级别:setup_method、teardown_method,开始于方法使用(在类中)
- 方法细化级别:setup、teardown,运行在调用方法的前后
参考下例
import pytest
def setup_module():
print("=====整个.py模块开始前只执行一次:setup_module=====")
def teardown_module():
print("=====整个.py模块结束后只执行一次:teardown_module=====")
def setup_function():
print("===每个函数级别用例开始前都执行setup_function===")
def teardown_function():
print("===每个函数级别用例结束后都执行teardown_function====")
def test_one():
print("test1")
def test_two():
print("test2")
class TestCase():
def setup_class(self):
print("====整个测试类开始前只执行一次setup_class====")
def teardown_class(self):
print("====整个测试类结束后只执行一次teardown_class====")
def setup_method(self):
print("==类里面每个用例执行前都会执行setup_method==")
def teardown_method(self):
print("==类里面每个用例结束后都会执行teardown_method==")
def setup(self):
print("=类里面每个用例执行前都会执行setup=")
def teardown(self):
print("=类里面每个用例结束后都会执行teardown=")
def test_three(self):
print("test3")
def test_four(self):
print("test4")
def test_five(self):
assert 1 == 2
if __name__ == '__main__':
pytest.main(["-q", "-s", "-ra", "setup_teardown.py"])
运行结果如下:
扩展-字符参数
上面的例子,我们通过在main函数来执行的pytest,可以添加一些参数,达到过滤用例结果的效果
if __name__ == '__main__':
pytest.main(["-q", "-s", "-ra", "setup_teardown.py"])
举个栗子:可以通过rfs
过滤出失败和未执行的
说明:-r
选项可以在执行结束后,打印一个简短的总结报告;-r
选项后面要紧接一个参数,用于过滤显示测试用例的结果
以下是一些比较常用的参数:
- f:失败的
- E:出错的
- s:跳过执行的
- x:跳过执行,并被标记为xfailed的
- X:跳过执行,并被标记为xpasse的
- P:测试通过的
- p:测试通过,并有输出信息的(print等)
- a:除了测试通过之外其他所有的
- A:所有的
以上参数,可以叠加使用