pytest学习笔记07-前后置之@pytest.fixtrue()

2021/12/28 6:07:21

本文主要是介绍pytest学习笔记07-前后置之@pytest.fixtrue(),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

上一篇讲了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,我们看看运行结果

 

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



这篇关于pytest学习笔记07-前后置之@pytest.fixtrue()的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程