Pytest ------ fixture 参数值传递 +固件之间相互调用 + 作用范围(五)
Fixture使用说明:
-
fixture 函数命名不要以test开头,尽量与用例区分开
-
一个fixture可以供多个函数来使用
-
fixture可以有返回值,其返回值可以被函数来使用
-
一个方法可以有多个fixture
-
fixture之间可以相互调用
1、一个方法可以有多个fixture、一个固件可以供多个函数来使用,如下图所示:
2、fixture返回执被其函数来使用,如下图所示:
固件中添加返回值,在测试方法中可以通过固件名来表示返回值
3、固件之间相互调用
4、fixture 的作用范围(scope)
fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function
-
-function:每一个函数或方法都会调用
-
-class:每一个类调用一次,一个类中可以有多个方法
-
-module:每一个.py文件调用一次,该文件内又有多个function和class
-
-session:是多个文件调用一次,可以跨.py文件调用,每个.py文件就是module
4.1、scope = "function"
@pytest.fixture() 如果不写参数,参数就是 scope="funciton", 它的作用范围是每个测试用例之前运行一次,销毁代码在测试用例之后运行
scope = "class"
fixture为class级别的时候,如果一个class里面有多个用例,都调用了fixture,那么此fixture只在此class里所有用例开始 执行一次 ,如果类外面方法也调用了fixture,那么此方法也会执行一次
从图上来看,fixture函数只在第一个test01函数执行之前,被执行一次,其他函数均未执行
从上图来看类外面方法也调用了固件,此方法运行之前也会调用此固件
4.2、scope="module"
fixture为module时,在当前.py脚本里面所有用例开始前只执行一次
从下图来看,当参数值为 module的时候,此模块脚本在执行之前只执行一次固件
4.3、sope="session"
fixture 为session级别是可以跨.py 模块调用的,当多个 .py 文件中的用例需要调用同一个fixture的时候,可以将fixture设置为 scope="session", 并且将其写入到 conftest.py 文件中