这四种作用范围,让pytest测试框架的fixture功能更加灵活
发布时间:2020-03-27 01:06:57 所属栏目:资源 来源:站长网
导读:ixture有一个scope的可选参数,用于控制fixture执行配置和销毁逻辑的频率,有四个待选值,function、class、module、session,默认值是function。 参数待选值介绍 function 函数级别的fixture每个 测试 函数只执行一次,配置代码在 测试用例 运行之前执行
ixture有一个scope的可选参数,用于控制fixture执行配置和销毁逻辑的频率,有四个待选值,function、class、module、session,默认值是function。 参数待选值介绍 function 函数级别的fixture每个测试函数只执行一次,配置代码在测试用例运行之前执行,销毁代码在测试用例运行之后执行,function是scope的默认值 class 类级别的fixture每个测试类只需要执行一次,无论测试类里有多少类方法都可以共享这个fixture module 模块级别的fixture每个模块只需要一次,无论模块里有多少个测试甘薯、类方法或者其他fixture都可以共享这个fixture session 会话级别的fixture每次会话只需要运行一次,一次pytest会话中所有测试函数、方法都可以共享这个fixture pytest --setup-show test_fixture_scope.py 运行测试用例,指定--setup-show参数,让控制台显示每个fixture被调用的测试,以及在各自作用范围下执行配置、销毁逻辑的顺序。 上图不仅出现了代表函数级别和会话级别的F和S,还出现了代表类级别和模块级别的C和M。作用范围虽然是由fixture自身定义的,但是scope在定义fixture时就已经定义了,不是在调用的时候定义,也就是说一个模块级别的fixture,只在这个模块运行一次。即使这个模块里多个参数函数都调用了这个fixture,但是也只会执行一次。 fixture只能使用同级别的fixture,或比自己级别更高的fixture,不能使用比自己级别低的fixture。比如类级别的fixture可以使用和自己同级别的类fixture,和模块、会话级别的fixture,但是不能使用函数级别的fixture。 scope实战 自实际测试用例运行中,我们可能在多个case或者多个模块中都需要建立数据库的链接,如果每次需要都去建立还是挺浪费资源的,其实我们在整个测试会话过程中只需建立一次链接,在会话结束时关闭链接即可。 使用usefixtures指定fixture 之前提高的指定fixture的方式都是通过在测试函数的参数列表里指定fixture,还可以用pytest的标记功能,@pytest.mark.usefixtures('fixture1', 'fixture2')标记测试函数或者类,可以指定一个或多个fixture。 fixture的autouse参数 autouse=True可以使的作用域内的测试函数都运行改fixture,可以实现那些需要运行多次、但是又不依赖任何系统状态或外部数据的初始化功能。 (编辑:桂林站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |