天天看点

pytest 之 fixture 夹具

pytest 之 fixture 夹具(作用域)

一、unittest中的setup和teardown 在pytest中如何表示?

fixture 夹具与unittest中的setUp相似

使用方式:

@pytest.fixture()

yield相当于unittest中的tear_down 测试用例方法执行之后进行执行

第一种方式: 将夹具函数名称作为参数传递到测试用例函数当中

pytest 之 fixture 夹具

第二种方式:

@pytest.mark.usefixtures(“夹具函数名称”)

将夹具函数名称以字符串的形式传入@pytest.mark.usefixtures()中,可以传多个值,可以直接放到类上面去,类下面的方法就可以不用写了,但是这样有一个局限性:不能接收返回值,即如果fixtrue中有返回值,就不采用@pytest.mark.usefixtures(“夹具函数名称”)这个方法

pytest 之 fixture 夹具

yield和return比较相似

在夹具中的yield后面可以传递参数(想要返回的值),半路return

函数遇到return就终止了,但是yield不一样,执行完yield之后还可以继续往下运行

在测试用例中可以接收yield中返回的值,以赋值的方式。

如下图:

pytest 之 fixture 夹具

二、unittest中的setupclass在pytest如何表示?

用法和set_up是一样的,只需要在夹具fixture指定参数即可

pytest 之 fixture 夹具

根据情况指定不同的参数。如下所示:

function:方法

class:类

module:模块

package:包(文件夹)

session:表示只要是运行了pytest,整个pytest过程只会运行一次

pytest 之 fixture 夹具

三、fixtrue之autouse

fixtrue中有一个参数autouse,默认为false

设置为true,即为自动的意思,默认就会使用fixtrue

pytest 之 fixture 夹具

四、conftest

可以将夹具的这些东西都单独存放到conftest.py中,(注意:conftest.py名字是固定的,只能存放在项目的根目录下),他会自动发现,用例模块需要调用不需要导入模块名,就可以直接进行使用。

最内层的conftest优先

pytest 之 fixture 夹具
pytest 之 fixture 夹具

继续阅读