Pytest - Fixture(12) - 配置文件conftest.py

发布时间 2023-05-31 17:56:51作者: 粥雨

Pytest - 配置文件 - conftest.py

前言

  • 如果在多个测试文件中的用到相同的 fixture函数,则可以将其移动到 conftest.py 文件中

  • conftest.py 是专门存放 fixture 的配置文件;

    • 例如:如果测试用例都需要进行用户登录的时候,仅需将登录的功能放到conftest.py 文件中,而不需要在每个用例中实现;

    • 例如:每次测试完成后都需要关闭浏览器窗口,仅需将关闭的动作放到conftest.py 文件中,而不需要在每个用例中实现;


注意事项

  • conftest.py 文件名称是固定的,不能变更;

  • conftest.py 只对同一个 目录下的所有测试用例生效,包含当前目录下——子目录中的测试用例;

  • 不同目录可以有自己的 conftest.py,一个项目中可以有多个 conftest.py

  • pytest 会默认读取 conftest.py 里面的所有 fixture ;即不需要手动 import conftest,pytest运行后会自动查找;


实际栗子

  • 目录结构:

    Project/
    	├── conftest.py		(fixture配置文件)
    	├── test_py.py		(测试用例脚本)	
    

    image-20230531174002085


  • 配置文件conftest.py 代码:

    # conftest.py
    import pytest
    
    @pytest.fixture(autouse=True)
    def con_login():
        print('\n==这是在conftest.py文件中的fixture,会自动运行==')
    
    @pytest.fixture
    def con_quit():
        print('==这是在conftest.py文件中的fixture,需要用例中手动引用==')
    

  • 测试用例test_py.py代码:

    # test_py.py
    import pytest
    
    # 手动引用conftest.py文件中的fixture
    def test_s1(con_quit):
        print("\n**测试用例 s1:手动引用fixture**")
    
    def test_s2():
        print("\n**测试用例 s2**")
    
    if __name__ == '__main__':
        pytest.main(['-q', 'test_py.py'])
    

  • 运行后的输出:

    image-20230531173857874