pytest精髓__fixture
阅读原文时间:2023年07月08日阅读:2

参数说明

scope:有四个级别参数函数"function"(默认),类"class",模块"module",整个测试项目"session"。

params:表示fixture的参数化功能。

1 import pytest
2 data = ['老子', '孔子', '孟子']
3
4 @pytest.fixture(params=data,ids=['user=Socrates','user=Platon','user=Aristotle'])
5 def login(request):
6 print('哲学兴起')
7 yield request.param
8 print('哲学消沉')
9
10 class Test_01:
11 def test_01(self, login):
12 print('---用例01---')
13 print('思想家:%s' % login)
14
15 if __name__ == '__main__':
16 pytest.main(['-vs'])

autouse:如果True,自动为用例使用。如果为False则需要设置来激活fixture。

1 import pytest
2 @pytest.fixture(autouse=True)
3 def login():
4 print('\n早出')
5 yield
6 print('\n晚归!')
7 class Test_Login():
8 def test_01(self):
9 print('---小兰---')
10 def test_02(self):
11 print('---任正非---')
12 if __name__ == '__main__':
13 pytest.main(['-vs'])

ids:ids表示在fixture对参数化的内容进行加上标识,比如让别人知道这个传入的参数是什么意思。

name:name参数表示对fixture的名称进行重命名。

1 import pytest
2 @pytest.fixture(name='我是冰箱')
3 def login():
4 print('\n打开冰箱')
5 yield
6 print('\n关上冰箱!')
7 class Test_Login():
8 def test_01(self, 我是冰箱):
9 print('---把大象塞进冰箱---')
10 if __name__ == '__main__':
11 pytest.main(['-vs'])

例子1  fixture调用与不调用的区别

1 import pytest
2 @pytest.fixture()
3 def login():
4 print('登录操作')
5 yield
6 print('退出登录')
7 class Test_Login():
8 def test_01(self, login):
9 print('需要用到登录!')
10 def test_02(self):
11 print('不需要登录!')
12 def test_03(self, login):
13 print('这里需要用到登录!')
14 if __name__ == '__main__':
15 pytest.main(['-vs'])

例子2  异常后依然会执行后置操作

1 import pytest
2 @pytest.fixture()
3 def login():
4 print('登录操作')
5 yield
6 print('退出登录!')
7 class Test_Login():
8 def test_01(self, login):
9 print('需要用到登录!')
10 assert 1==1
11 def test_02(self):
12 print('不需要登录!')
13 def test_03(self, login):
14 print('这里需要用到登录!')
15 assert 1==2
16 if __name__ == '__main__':
17 pytest.main(['-vs']

例子2  同时调用两个fixture

1 import pytest
2 @pytest.fixture()
3 def login():
4 print('登录操作')
5 yield
6 print('退出登录!')
7 @pytest.fixture()
8 def log():
9 print('打开日志功能!')
10 yield
11 print('关闭日志功能!')
12
13 class Test_Login():
14 def test_01(self, login, log):
15 print('需要用到登录!')
16 def test_02(self):
17 print('不需要登录!')
18 def test_03(self, log, login):
19 print('这里需要用到登录!')
20 if __name__ == '__main__':
21 pytest.main(['-vs'])

月缺不改光,剑折不改刚。有志向的人自信自强;

君子量不极,胸吞百川流。有志向的人心有远方;

丈夫非无泪,不洒离别间。有志向的人情深意长;

及时当勉励,岁月不待人。有志向的人不会虚度时光。

人生感意气,功名谁复论。有志向的人看淡名利。

感时思报国,拔剑起蒿莱。有志向的人是最可靠的力量。

愿君学长松,慎勿作桃李。