前言
学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次。当然还有更高级一点的setupClass和teardownClass,需配合@classmethod装饰器一起使用,在做selenium自动化的时候,它的效率尤为突出,可以只启动一次浏览器执行多个用例。
pytest框架也有类似于setup和teardown的语法,并且还不止这四个。
用例运行级别
模块及(setup_module/teardown_module)开始于模块始末,全局的
函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
方法级(setup_method/teardown_method)开始于方法始末(在类中)
类里面的(setup/teardown)运行在调用方法的前后
函数式
setup_function/teardown_function
1.pytest框架支持函数和类两种用例方式,先看函数里面的前置和后置用法:
setup_function/teardown_function每个用例开始和结束调用一次
#-*- coding=utf-8 -*-
import pytest
#函数式
def setup_function():
print("setup_function:每个用例开始前都会执行")
def teardown_function():
print("teardown_function:每个用例结束后都会执行")
def test_onea():
print("正在执行--test_onea")
x="xixi"
assert 'i' in x
def test_twob():
print("正在执行--test_twob")
x="hua"
assert hasattr(x,"check")
def test_threec():
print("正在执行--test_threec")
a="hello"
b="hello world"
assert a in b
if __name__=="__main__":
pytest.main(["-s","test_f1.py"])
运行结果:
============================= test session starts =============================
platform win32 -- Python 3.7.0, pytest-5.4.3, py-1.9.0, pluggy-0.13.1
rootdir: E:\study\python2020collected 3 items
test_f1.py setup_function:每个用例开始前都会执行
.正在执行--test_onea
teardown_function:每个用例结束后都会执行
setup_function:每个用例开始前都会执行
F正在执行--test_twob
test_f1.py:11 (test_twob)
def test_twob():
print("正在执行--test_twob")
x&#