上文中我们学习了Pytest的基本使用,那这篇我们来讲下Pytest的前置和后置
1、基本概念
抛出问题:前置和后置是什么意思呢,用户是什么?我们应该在什么时候用到呢?
先来讲,前置和后置是什么意思,前置表示在执行代码前先执行前置的内容,后置表示执行完全部的代码后,再执行后置的代码
有什么用处:比如说打开浏览器-搜索内容-关闭浏览器,这一条测试用例,我们就可以把打开浏览器放在前置里,关闭浏览器放在后置里,这样就不需要我们自己处理了
什么时候用到呢?
用例运行前,一些准备工作,初始化操作,执行完之后的清除数据操作,关闭通道操作,我们都可以用到前置和后置
2、基本使用
这里我们讲两个,一个是类级别的,一个是类里边函数级别的
- 前置:setup
- 后置:teardown
1、函数级别
代码语言:javascript复制"""
前置后置: 函数级别
"""
import pytest
class TestDemo:
"""函数级别用例"""
# 说明: 特殊⽅法名写法固定, 没有代码提示, 需要⼿写!
# 注意: 函数级别执⾏顺序:
# 先 setup() -> 用例1 -> teardown() ⽅法, 再 setup() -> 用例2 -> teardown() ⽅法
def setup(self):
print('每个用例执行前都会先执行我')
def teardown(self):
print('每个用例执行后都会先执行我')
def test_01(self):
print('用例1')
def test_02(self):
print('用例2')
执行结果:
这里有两点,第一是我们写setup和teardown的时候是没有提示的,需要自己填写,第二点是执行顺序不是从上往下执行的,是按照setup() -> 用例1 -> teardown() ⽅法, 再 setup() -> 用例2 -> teardown() ⽅法
2、类级别
代码语言:javascript复制"""
特殊⽅法: 类级别
"""
import pytest
class TestDemo:
"""类级别用例"""
# 说明: 特殊⽅法名写法固定, 没有代码提示, 需要⼿写!
# 注意: 类级别执⾏顺序:
# 先 setup_class() -> 测试⽅法1 -> 测试⽅法2 ->teardown_class() ⽅法
def setup_class(self):
print('在这个类前执行')
def teardown_class(self):
print('在这个类后执行')
def test_01(self):
print('用例1')
def test_02(self):
print('用例2')
执行结果:
这里我们的执行顺序是setup_class() -> 测试⽅法1 -> 测试⽅法2 ->teardown_class() ⽅法
3、函数级别和类级别混合使用
代码语言:javascript复制"""
特殊⽅法: 函数级别和类级别同时使⽤
"""
import pytest
class TestDemo:
def setup_class(self): # 1
print('类执行前先执行我')
def teardown_class(self): # 2
print('类执行后先执行我')
def setup(self): # 3
print('方法函数前执行我')
def teardown(self): # 4
print('方法函数后执行我')
def test_01(self): # 5
print('用例1')
def test_02(self): # 6
print('用例2')
大家猜一下执行顺序是什么样的呢
执行结果:
1 -> 3 -> 5 -> 4 -> 3-> 6 -> 4 -> 2
前置和后置内容是不是也很简单,至于其他的级别前置后置,等我们用到的时候再讲