前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytest入门 -6 fixture参数说明

pytest入门 -6 fixture参数说明

作者头像
孟船长
发布2022-02-23 16:45:06
2780
发布2022-02-23 16:45:06
举报

fixture实现前后置

参数

scope --作用域

function:函数/方法之前和之后执行

手动调用方式是在测试用例的参数里加入fixture的名称

class:类之前和之后执行

手动调用的方式是在类上面加上@pytest.mark.usefixtures("方法名")装饰器

package/session:整个项目会话之前和之后执行。

当session只作用于一个.py文件时相当于module

一般会结合conftest.py文件来实现

autouse --自动执行

默认:False;如果改为True,则不需要调用,在对应的作用域会自动执行

params --实现参数化(数据驱动)

ids --参数,必须和params一起使用,给参数起别名

name --给fixture起别名

yield可以将数据返回,类似return,但是return后面就不能再接代码了,而yield后面是可以继续写其他代码的。所以在“后置”操作时,我们都习惯用yield

scope的值为classautouse的值为False时,如何调用fixture

@pytest.mark.usefixtures("方法名")

params 用于实现参数化

比如一个用例需要分别用3个不同数据(等价类和边界值)进行测试,如果一个用例代码写三遍有点笨了,这个时候用params这个参数就可以

说明:

1、params=read_yaml() --params=方法名(),调用 2、exe_sql(request) 注意,括号里是request 规定就是这么写,没有为什么 3、request.param 调用通过read_yaml()方法拿到的数据,就要求这么写,上面参数是params,这里是param,就要求这么写 4、exe_sql这里我本来是打印print(request.param)看了一下,然后才yield的。为了说明问题,就是实现参数化(数据驱动),直接强调一下通过yield方法是可以把取到的值作为参数传给其他方法的

5、test_api()方法引用fixture,要在方法中传fixture修饰过的方法名

执行结果:

可以看到,用例二分别用测试数据执行了三次。

ids不能单独使用,必须和params一起使用,作用是给参数起别名

看上面那个执行结果

如果你的数据太长,那这里显示会很乱,这时候就能用到ids这个参数了

执行结果:

name作用是给fixture起别名

上面我们用fixture装饰的方法叫exe_sql,如果这个方法很长或者你不想调用的时候叫这个名字,就可以用namefixture修饰的方法改名字

注意:当你给fixture装饰的方法(exe_sql())传了name参数改名字以后,用例调用的时候都要用你改过以后的名字(db),用原来的方法名(exe_sql)是会报错的,因为找不到了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档