pytest精髓__fixture

命令:fixture(scope=‘function’,params=None,autouse=False,ids=None,name=None)

参数说明

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'])

 

 

 

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

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

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

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

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

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

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