pytest的conftest.py配置文件

conftest.py是什么?

conftest.py是fixture函数的一个集合,可以理解为公共的提取出来放在一个文件里,然后供其它模块调用。不同于普通被调用的模块,conftest.py使用时不需要导入,Pytest会自动查找。

conftest.py使用场景

如果我们有很多个前置函数,写在各个py文件中是不很乱?再或者说,我们很多个py文件想要使用同一个前置函数该怎么办?这也就是conftest.py的作用

conftest.py使用原则

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

conftest.py与运行用例在同一个包下,并且该包中有__init__.py文件使用的时候

在编写不需要导入conftest.py,会自动寻找。

conftest.py文件特点:

1、可以跨.py文件调用,有多个.py文件调用时,可让conftest.py只调用了一次fixture,或调用多次fixture

2、conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件

3、不需要import导入 conftest.py,pytest用例会自动识别该文件,放到项目的根目录下就可以全局目录调用了,如果放到某个package下,那就在该package内有效,可有多个conftest.py

4、conftest.py配置脚本名称是固定的,不能改名称

5、conftest.py文件不能被其他文件导入

6、所有同目录测试文件运行前都会执行conftest.py文件

conftest应用场景

1、每个接口需共用到的token

2、每个接口需共用到的测试用例数据

3、每个接口需共用到的配置信息

conftest用法结合fixture使用:

参考:【pytest之fixture使用

fixture的作用范围

fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function

-function:每一个函数或方法都会调用,function默认模式@pytest.fixture(scope='function')或 @pytest.fixture()

-class:每一个类调用一次,一个类中可以有多个方法

-module:每一个.py文件调用一次,一个模块中又有多个function和class

-session:多个文件调用一次,可以跨.py文件调用

conftest结合fixture的使用

conftest中fixture的scope参数为session,所有测试.py文件执行前执行一次

conftest中fixture的scope参数为module,每一个测试.py文件执行前都会执行一次conftest文件中的fixture

conftest中fixture的scope参数为class,每一个测试文件中的测试类执行前都会执行一次conftest文件中的fixture

conftest中fixture的scope参数为function,所有文件的测试用例执行前都会执行一次conftest文件中的fixture

代码示例:

conftest.py使用举例:

conftest.py文件(scope=“session”):

import pytest
@pytest.fixture(scope="session")
def login():
    print("输入账号密码")
    yield
    print("清理数据完成")

case文件:

import pytest
class TestLogin1():
    def test_1(self, login):
        print("用例1")

    def test_2(self):
        print("用例2")

    def test_3(self, login):
        print("用例3")
if __name__ == '__main__':
    pytest.main()

运行结果:

从上图可以看出,conftest.py内的fixture方法的作用范围是session,调用时,整个.py文件只会调用一次。

 

 

 

posted @ 2021-07-23 16:41  习久性成  阅读(735)  评论(0编辑  收藏  举报