当前位置: 首页>编程语言>正文

pytest 切换iframe pytest scope

上一篇讲了setup和teardown,但是我们并不是任何时候都需要全局去设置,那么这一篇来说一说这个@pytest.fixtrue()装饰器

这个装饰器的作用是实现部分用例的前后置,也就是说这个是自己可控可选的。

先来了解一下@pytest.fixtrue()的参数

@pytest.fixtrue(scope=‘’,params=‘’,autouse=‘’,ids=‘’,name=‘')

这个装饰器中我们可以填入5个参数,我们来一个一个去看

(1)scope表示的是被@pytest.fixtrue装饰器标记的方法的作用域。function(默认),class,module,package/session,这里的默认就是给每一条用例加上前后置,class就等于setup_class()只给类设置前后置,而module就是当前模块,package就是当前的包。

(2)params的作用是参数化(支持列表,元组,字典列表[{},{}]),字典元组({},{}))

from rich import scope

 

import pytest

 

 

@pytest.fixture(scope='function',params=['1','2','3'])

def my_fixture(request):

    print('这是前置')

    print('这是后置')

    return request.param

 

 

class TestClass:

    def test_one(self,my_fixture):

        x = "this"

        assert "h" in x

        print(my_fixture)

    def test_two(self):

        x = "hello"

        assert "h" not in x

首先要注意,我在类的外面定义了前置和后置,那么在类里面的方法如果要调用前后置,就要将my_fixture函数作为参数传进方法里。

前置函数接收参数必须在函数里传参request

可以通过return request.param取装饰器@pytest.fixture中参数化的参数

yield的作用是用于后置,在yield后面的代码就是后置

这里可以修改成

yield request.param

yield和return不能一起用

return和yield都表示返回

return的后面不能有代码,返回后不会继续执行

yield的后面可以有代码,作为后置是会完成后续的代码的

(3)autouse=True的作用是自动给每一个用例加上前后置,默认的是false

(4)ids的作用是当params参数化时,给每个值设置一个变量名,意义不大。

(5)name的作用是给@pytest.fixtrue标记的方法取一个别名,当取了别名之后,原来的方法名就无法使用了。 

参数介绍完,我们来个代码示例:

import pytest


@pytest.fixture(scope='class',params=['1','2','3'])
def my_fixture(request):
    print('这是前置')
    yield request.param
    print('这是后置')


class TestClass:
    def test_one(self,my_fixture):
        x = "this"
        assert "h" in x
        print(my_fixture)
    def test_two(self):
        x = "hello"
        assert "h" not in x

我这里设置了装饰器只对class也就是类生效,然后进行参数化,传参1,2,3,我们看看运行结果

pytest 切换iframe pytest scope,pytest 切换iframe pytest scope_pytest 切换iframe,第1张

 

这里看到是只针对了当前的类生效的,那么为什么test_one会执行3次呢,因为我传递了3个参数,然后就是为什么从第二次执行开始都会先出现一个后置呢,因为我们每一次执行完了之后会再执行后置,所以会显示一个“这是后置”,而为什么最后一次执行的后置显示在test_two执行完之后呢,因为这一次程序把两条用例都执行完了,所以才会显示在test_two后面。

——————————————就算路是弯的,那也得走过才知道。因为你没有选择,这个社会,不前进,就灭亡。




https://www.xamrdz.com/lan/54z1963329.html

相关文章: