本文章主要总结fixture的参数scope,通过它可以指定fixture的作用范围。scope的参数主要应用于控制fixture执行配置和销毁逻辑的频率。在scope的参数中主要有四个值可以选择,分别是function(函数级别),class(类级别).module(模块级别),session(会话级别),它的默认值是函数级别。下面依据各个案例来说明该参数的实际应用。
先来看函数级别,也就是说函数级别中,每个测试函数只需要执行一次,配置代码在测试用例运行前执行,销毁代码是在测试用例运行之后执行。见案例代码:
该fixture仅仅是函数级别的应用,不会应用于其他的方面,见执行后的结果信息:
下来看类级别的,类级别的主要指的是每个测试类需要运行一次,无论测试类里面有多少个测试方法,都会被执行到并且共享fixture,见案例代码:
见执行后的结果信息:
来来看模块级别的,在模块级别的fixture每个模块只需要执行一次,无论模块里面有多少个测试函数,类方法,都可以共享这个fixture,见案例代码:
见执行后的输出信息:
是否存在这样的一个疑问,函数级别的是否可以应用在类级别,类级别的是否可以应用于函数级别了,见测试代码:
见输出的信息:
最后一个是会话级别的,会话级别的fixture每次会话只需要运行一次,一次pytest会话中的所有测试函数,方法都可以共享该fixture,见案例代码:
见测试的代码:
见执行后输出的结果信息:
在pytest中也可以使用userfixture指定多个fixture,这样来标记测试函数或者测试的类,使用usefixture,需要在一个参数中指定一个或者多个fixture字符串,这样的一个场景在特定的场景下还是可以的,见案例的测试代码:
见执行后输出的信息:
在如上的结果信息中,就可以看到,测试函数共享了两个fixture。
在前面使用fixture的时候说到了autouse的选项,也应该看到,如果不使用该选项,每次共享fixture都需要指定,但是使用了它后就不需要指定了,那么标准的说法应该是:依据选项autouse=True,使作用域内的测试函数都执行该fixture,这与那些需要多次执行,但不依赖任何的状态或者外部数据的代码配合的比较好。针对如上的代码修改,见修改后的源码:
见执行后输出的结果信息:
Original: https://blog.csdn.net/weixin_31682257/article/details/112933120
Author: melonsyk
Title: python fixture_python自动化测试学习-Pytest中fixture的作用范围
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/776249/
转载文章受原作者版权保护。转载请注明原作者出处!