在iOS UI 自动化工程里面最早我用的是@pytest.fixture(),因为在pycharm中联想出来的fixture是带()的,后来偶然一次我没有带()发现也没有问题,于是详细查了一下@pytest.fixture() 和 @pytest.fixture的区别,总结了一下分享给大家。
@pytest.fixture() 和 @pytest.fixture 在功能上没有区别,主要的差别在于 括号 是否存在。
1. @pytest.fixture
这是最常见的写法,直接使用 @pytest.fixture 装饰器。由于 @pytest.fixture 装饰器本身没有任何必需的参数,因此不需要加括号。
例如:
import pytest@pytest.fixture
def my_fixture():return "Hello, Pytest!"
2. @pytest.fixture()
这种写法也可以使用,但它是 冗余 的,因为 @pytest.fixture 默认没有必须传递的参数,所以使用括号并不会改变装饰器的行为。
例如:
import pytest@pytest.fixture()
def my_fixture():return "Hello, Pytest!"
【总结】
1、在没有参数时,@pytest.fixture 和 @pytest.fixture() 是等价的,使用括号并不会改变装饰器的功能;@pytest.fixture 是 @pytest.fixture() 的简写形式,它直接调用 fixture 装饰器的默认参数;没有参数时,为了代码简洁和遵循惯例,通常推荐使用 @pytest.fixture,不需要加括号,更简洁。
2、当需要设置参数(如 scope, autouse 等)时,必须使用 @pytest.fixture()。