当前位置 博文首页 > 剑尊:pytest:conftest.py文件

    剑尊:pytest:conftest.py文件

    作者:剑尊 时间:2021-01-30 15:30

    一、fixture scope 为session 级别是可以跨 .py模块调用的,也就是当我们有多个 .py文件的用例时,如果多个用例只需调用一次fixture,可以将scope=‘session’,并且写到conftest.py文件里。写到conftest.py文件可以全局调用这里面的方法。使用的时候不需要导入conftest.py文件。使用conftest.py的规则:

    1.conftest.py这个文件名是固定,不可以更改

    2.conftest.py 与运行用例在同一个包下,并且该包中有__int__.py文件

    3.使用的时候不需要导入conftest.py ,pytest会自动识别到这个文件

    4.放到项目的根目录下可以全局调用,放到某个package 下,就在这个package 内有效

     

    案例:

    在运行整个项目下的所有用例,只执行一次打开浏览器。执行完所有的用例之后再执行关闭浏览器,可以在这个项目下创建一个conftest.py文件,将打开浏览器操作的方法

    放在这个文件下,并添加一个装饰器 @pytest.fixture(scope='session'),就能够实现整个项目所有测试用例的浏览器复用,案例目录结构如下:

     

     创建目录test_scope,并在目录下创建三个文件conftest.py   test_scope1.py和test_scope2.py

    conftest.py文件定义了公共方法,pytest会自动读取conftest.py定义的方法,代码如下

    #!/usr/bin/env python
    # _*_coding: utf-8 _*_
    
    import pytest
    
    @pytest.fixture(scope="session")
    def open():
        print("打开浏览器")
        yield
    
        print("执行teardown !")
        print("关闭浏览器")

     

    创建文件test_scope1.py代码如下:

    !/usr/bin/env python
    # _*_coding: utf-8 _*_
    
    import pytest
    
    
    def test_search1(open):
        prin("test_search1")
        pass
    
    
    def test_search2(open):
        print("test_search2")
        pass
    
    
    def test_search3(open):
        prin("test_search3")
        pass

    创建test_scope2.py 代码如下

    #!/usr/bin/env python
    # _*_coding: utf-8 _*_
    
    class TestFunc():
        def test_case1(self):
            print("test_case1,需要登入")
    
        def test_case2(self):
            print("test_case2,不需要登入")
    
        def test_case3(self):
            print("test_case3,需要登入")

    打开CMD,进入目录test_scope执行如下命令

    pytest -v -s

    或者

    pytest  -v  -s  test_scope1.py  test_scope2.py

     

    下一篇:没有了