• 【pytest学习7】fixture的重命名


     通过前面学习fixture可以正常的代替setup和teardown,我们在后期框架中的文件名过多,或者函数名过多,有时会和fixture名字进行重名,或者fixture调用容易出错。fixture也可以进行重新自己更改自己的名称

    fixture重命名

    在fixture源码中我们可以通过修改name的参数来更改fixture的名称。默认是我们定义def的名称

    复制代码
    def fixture(  # noqa: F811
        fixture_function: Optional[_FixtureFunction] = None,
        *,
        scope: "Union[_Scope, Callable[[str, Config], _Scope]]" = "function",
        params: Optional[Iterable[object]] = None,
        autouse: bool = False,
        ids: Optional[
            Union[
                Iterable[Union[None, str, float, int, bool]],
                Callable[[Any], Optional[object]],
            ]
        ] = None,
        name: Optional[str] = None
    复制代码

    说这么多,大家也不知道说的啥,举个例子吧,这里我把函数名为login的fixture通过配置参数name=“anjing_login”

    复制代码
    # test__01.py
    
    
    import pytest
    
    
    @pytest.fixture(name='anjing_login')
    def login():
        print('输入账号,输入密码')
        print('完成登录功能!!!!')
        yield
        print('---退出登录---')
    
    
    
    class Test_Login:
    
        def test_01(self, anjing_login):
            print('------用例01------')
    
        def test_02(self):
            print('------用例02------')
    
        def test_03(self,anjing_login):
            print('------用例03------')
    
    
    if __name__ == '__main__':
        pytest.main(['-s', 'test__01.py'])
    复制代码

    这里发现我们通过使用anjing_login 就直接调用了更改名前的login。

    注意:当我们进行对fixture重命名后,如果再次调用以前的名字就会出现报错

    复制代码
    import pytest
    
    @pytest.fixture(name='anjing_login')
    def login():
        print('输入账号,输入密码')
        print('完成登录功能!!!!')
        yield
        print('---退出登录---')
    
    
    class Test_Login:
    
        def test_01(self, login):
            print('------用例01------')
    
        def test_02(self):
            print('------用例02------')
    
        def test_03(self, anjing_login):
            print('------用例03------')
    
    
    if __name__ == '__main__':
        pytest.main(['-s', 'test__01.py'])
    复制代码

    这里把用例1继续调用以前的名称,执行后,就会通过报错。所以小伙伴要特别注意,如果修改了name名称后,就需要调用重命名的名称。

    声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作
  • 相关阅读:
    UML系列图--用例图
    扩展方法
    POJ3254 Corn Fields(状压DP)
    POJ2836 Rectangular Covering(状压DP)
    POJ2817 WordStack(状压DP)
    POJ2441 Arrange the Bulls(状压DP)
    HDU2167 Pebbles(状压DP)
    HDU1561 The more, The Better(树形DP)
    POJ3659 Cell Phone Network(树上最小支配集:树型DP)
    UVa10917 A Walk Through the Forest(SPFA+记忆化搜索)
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/14817938.html
Copyright © 2020-2023  润新知