fixture 里面有个参数autouse,默认是False没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了
调用fixture三种方法:
- 函数或类里面方法直接传fixture的函数参数名称
- 使用装饰器@pytest.mark.usefixtures()修饰
- auto=True自动使用
用例传fixture参数
方法一:先定义start功能,用例全部传start参数,调用该功能
import time import pytest @pytest.fixture(scope="function") def start(request): print('\n---------开始执行function-------') def test_a(start): print("---------用例a执行-------“) class Test_aa(): def test_1(self, start): print('---------用例1------------‘') def test_2(self, start): print('---------用例2-------") if __name__=="__main__" pytest.main(["-s", "test_000.py"])
方法二:使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例
import time import pytest @pytest.fixture(scope="function") def start(request): print('\n---------开始执行function-------') @pytest.mark.usefixtures("start") def test_a(start): print("---------用例a执行-------“) @pytest.mark.usefixtures("start") class Test_aa(): def test_1(self, start): print('---------用例1------------‘') def test_2(self, start): print('---------用例2-------") if __name__=="__main__" pytest.main(["-s", "test_001.py"])
方法三:设置autouse=True auto 设置为True 自动调用fixture功能
- start设置scope为module级别,在当前.py用例模块只执行一次,autouse =True自动使用
- open_home设置scope 为function级别,每个用例前都调用一次,自动使用
import time import pytest @pytest.fixture(scope="module",autouse = True) def start(request): print('\n---------开始执行module-------') print('module:%s' % request.module.__name__) print('-------启动浏览器------') yield print("--------结束测试end!-----------") @pytest.fixture(scope="function",autouse = True) def open_home(request): print('function:%s \n----------回到首页--------' % request.function.__name__) @pytest.mark.usefixtures("start") class Test_aa(): def test_1(self, start): print('---------用例1------------‘') def test_2(self, start): print('---------用例2-------") if __name__=="__main__" pytest.main(["-s", "test_002.py"])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。