• 自动化测试框架Pytest(二)——前后置处理


    有一些初始化配置和测试之后的收尾,只需要处理一次,这个时候我们就要用到夹具。


    一、pytest的前后置(固件、夹具)处理

    1、setup/teardown,setup_class/teardown_class

    setup/teardown:在每个用例的前后都会执行

    setup_class/teardown_class:在每个类的前后都会执行

    • import pytest class TestLogin: def setup_class(self): print('------------------setup_class-----------------') def setup(self): print('------------------setup-----------------') def test_01(self): print('测试百里守约') def test_02(self): print('测试娜可露露') def test_03(self): print('测试蔡文姬') def teardown(self): print('--------------------teardown_----------------') def teardown_class(self): print('--------------------teardown_class----------------')

    二、使用fixture装饰器来实现部分用例的前后置

    @pytest.fixture(scope="",params="",autouse="",ids="",name="")
    scope:标记的作用域。function(默认)、classmodule、packageparams:参数化autouse:True自动执行,默认是Falseids:当使用params参数化时,给每一个值设置一个变量名,意义不大name:给标记的方法取一个别名

    1、scope,默认是function

    import pytest
    @pytest.fixture(scope="function")def my_fixture():    print('\n前置方法,可以实现部分及全部用例的前置')    yield    print('\n后置方法,可以实现部分及全部用例的后置')
    class Test03:    def test_01(self):        print('测试百里守约')
        def test_02(self, my_fixture):        print('测试娜可露露')
        def test_03(self):        print('测试蔡文姬')

    生成前后置:

    2、autouse自动使用

    import pytest
    @pytest.fixture(scope="function", autouse=True)def my_fixture():    print('\n前置方法,可以实现部分及全部用例的前置')    yield    print('\n后置方法,可以实现部分及全部用例的后置')
    class Test03:    def test_01(self):        print('测试百里守约')
        def test_02(self):        print('测试娜可露露')
        def test_03(self):        print('测试蔡文姬')
    

    所有方法都加上前后置:

    如果改成class

    @pytest.fixture(scope="class", autouse=True)

    3、params,用例可以使用提前准备的参数

    import pytest
    @pytest.fixture(params=['成龙','甄子丹'] )def my_fixture(request):    print('\n前置')    yield request.param    print('\n后置')
    class Test03:    def test_01(self, my_fixture):        print('测试百里守约 '+my_fixture)
        def test_02(self):        print('测试娜可露露')
        def test_03(self):        print('测试蔡文姬')

    4、name,取个别名

    import pytest
    @pytest.fixture(params=['成龙','甄子丹'], name="wufantest")def my_fixture(request):    print('\n前置')    yield request.param    print('\n后置')
    class Test03:    def test_01(self, wufantest):        print('测试百里守约 '+wufantest)
        def test_02(self):        print('测试娜可露露')
        def test_03(self):        print('测试蔡文姬')

    三、通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用

    1. conftest.py文件是单独存放的一个夹具配置文件,名称不能更改。

    2. 用处可以在不同的py文件中使用同一个fixture函数。

    3. 原则上conftest.py需要和运行的用例放到统一层。并且不需要做任何的imprt导入的操作。

    conftest.py:

    import pytest
    def read_data():    return ['sql111','sql222']
    @pytest.fixture(params=read_data(), name="wufantest")def execute_sql(request):    print('\n执行sql')    yield request.param    print('\n关闭数据库连接')

    用例类:​​​​​​​

    import pytest
    class Test04:    def test_01(self,wufantest):        print('测试百里守约'+wufantest)
        def test_02(self):        print('测试娜可露露')
        def test_03(self):        print('测试蔡文姬')

    四、总结


    setup/teardown,setup_class/teardown_class 它是作用于所有用例或者所有的类
    @pytest.fixtrue() 它的作用是既可以部分也可以全部前后置。
    conftest.py和@pytest.fixtrue()结合使用,作用于全局的前后置。


    学习资源分享

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

    这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

    如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入下方我的qq群大家一起讨论交流,里面也有各种软件测试资料和技术交流。

  • 相关阅读:
    Debian12配置NTP时间同步
    攻防世界nice_bgm
    WebRTC实现简单音视频通话功能
    Python闭包
    mysql中find_in_set()函数的使用及in()用法详解
    java-net-php-python-jspm家教信息管理系统(2)计算机毕业设计程序
    NetSuite税额尾差的处理
    阿里云K8s容器Pod中Java进程CPU占比100%排查
    数据结构(11)图的遍历,DFS、BFS的JAVA实现
    js判断数据类型、toString和valueOf区别,类型转换、不同类型间的运算、判断相等
  • 原文地址:https://blog.csdn.net/m0_58026506/article/details/126249472