前置:setup 每个用例开始前执行一次
setup_class 每个类开始前执行一次
后置:teardown 每个用例结束后执行一次
teardown_class 每个类结束后执行一次
import pytest
class TestPC:
def setup_class(self):
print("测试类开始,每个类开始前执行一次")
def setup(self):
print("这是用例开始,每个用例开始都会执行一次")
def test_login(self):
print('今天星期一')
def test_add(self):
print(1+2,'天气很不错')
def teardown(self):
print("这是用例结束,每个用例结束都会执行一次")
def teardown_class(self):
print("测试类结束,每个类结束后执行一次")
执行结果:
@pytest.fixture(scope=“function”,autouse=False,params=read_yaml())
scope:作用域
functio表示该固件作用域在函数,即在函数之前和函数之后执行
1.手动调用是在测试用例的参数后面加入fixture名称
2.如果fixture有通过return或者yield返回值的话,可以把这个值作为参数传递到用例中,通过固件名称返回
scope=class:在类之前和之后执行
scope=package/session:在整个项目/回话之后执行
autouse:自动执行,默认为Flase
params:实现参数化
import pytest
def read_yaml():
return ["huge","tangyan","yangmi"]
@pytest.fixture(scope="function",autouse=False,params=read_yaml())
def exe_database_sql(request):
print("sql查询")
yield request.param
print("关闭查询")
@pytest.mark.usefixtures("exe_database_sql")
class TestPC():
def test_login(self):
print('今天星期一')
def test_add(self,exe_database_sql):
print(1+2,'天气很不错:',exe_database_sql)
def read_yaml():
return ["huge","tangyan","yangmi"]
@pytest.fixture(scope="function",autouse=False,params=read_yaml(),ids=['a','b','c'],name='db')
def exe_database_sql(request):
print("sql查询")
yield request.param
print("关闭查询")
class TestPC():
def test_login(self):
print('今天星期一')
def test_add(self,db):
print(1+2,'天气很不错:',db)
1.conftest.py专门用于存放fixture的配置文件,固定名称
2.conftest.py中所有的方法调用都不需要导包
3.conftest.py可以有多个,且多个conftest.py中的固件均可被一个用例调用
类:fixture:session > fixture:class > setup_class
函数:fixture:functiom>setup
因篇幅问题不能全部显示,请点此查看更多更全内容