首页 > 其他分享 >pytest之fixture使用方式

pytest之fixture使用方式

时间:2023-11-28 13:44:52浏览次数:21  
标签:调用 方式 fixture pytest print login def

一、问题

pytest中fixture的调用方式有哪几种?

 

二、回答

有4种方式:
1.传参调用
2.自动调用autouse=True
3.手动调用usefixtures
4.与parametrize结合调用indirect=True

第一种方式:传参调用
getToken方法装上了 @pytest.fixture(),在 testQuery(getToken)中传参,即可获取getToken方法的返回值

 1 host = "http://66.66.66.66:9000" 
 2 
 3 @pytest.fixture()  
 4 def getToken():  
 5     url = host + '/pinter/bank/api/login2'  
 6     data = {"userName": "admin", "password": "1234"}  
 7     response = requests.post(url=url, data=data)  
 8     assert response.json().get("code") == '0'  
 9     return response.json().get("data")
10     
11 def testQuery(getToken):  
12     url = host + '/pinter/bank/api/query2'  
13     headers = {"testfan-token": getToken}  
14     data = {"userName": "admin"}  
15     response = requests.get(url=url, params=data, headers=headers)  
16     assert response.json().get("code") == '0'

 

第二种方式:自动调用autouse=True
在执行每个方法时都会调用该fixtureDemo方法,先准备数据,在调用方法,在清理数据

1 @pytest.fixture(autouse=True)  
2 def fixtureDemo(self):  
3     print("准备数据")  
4     yield  
5     print("清理数据")

 

第三种方式:手动调用usefixtures

 1 @pytest.fixture()  
 2 def fixtureDemo(self):  
 3     print("准备数据")  
 4     yield  
 5     print("清理数据")
 6     
 7 @pytest.mark.usefixtures("fixtureDemo") 
 8 @pytest.mark.parametrize("id",[1,2])  
 9 @pytest.mark.flaky(reruns=3,reruns_delay=2)  
10 def testGetMsg(self,id):  
11     '''  
12     普通的GET类型接口  
13     :return:  
14     '''    getUrl = self.host + "/pinter/com/getSku"  
15     paramContent = {"id":id}  
16     response = requests.get(getUrl,params=paramContent)  
17     print(response.json())  
18     assert response.json().get("code") == '0'

 

第四种调用:与parametrize结合调用

 1 @pytest.fixture()  
 2 def login(self,request):  
 3     name = request.param  
 4     print(f"===账号是:{name}===")  
 5     return name+"test"  
 6   
 7 testData = ["linda","Bob"]  
 8   
 9 @pytest.mark.parametrize("login",testData,indirect=True)  
10 def testName(self,login):  
11     print(f"测试用例的登录账号是:{login}")
12 
13 >>> 运行结果如下:
14 >>> 测试用例的登录账号是:lindatest
15 >>> 测试用例的登录账号是:Bobtest
16 
17 @pytest.mark.parametrize("login",testData,indirect=False)  
18 def testName(self,login):  
19     print(f"测试用例的登录账号是:{login}")
20 
21 >>> 运行结果如下:
22 >>> 测试用例的登录账号是:linda
23 >>> 测试用例的登录账号是:Bob

当indirect为True时,login代表的是login函数,会将testData中每个名字都加上test后缀
当indirect为False时,login代表的是普通参数,会直接返回testData中每个名字的值

 

三、拓展fixture之生命周期
session:会话级,每次会话只需要运行一次,会话内所有方法及类,模块都共享这个方法
module:模块级,每一个.py 文件调用一次
class:类级,每个测试类只运行一次
function:函数级,每一个函数或方法都会调用,不写时默认就是函数级

标签:调用,方式,fixture,pytest,print,login,def
From: https://www.cnblogs.com/miaomiaokaixin/p/17861768.html

相关文章

  • pytest参数化数据来源于csv文件时,如果读取参数化数据?
    一、问题pytest参数化如何读取csv文件数据? 二、回答有两种获取方式:1.列表嵌套列表的方式2.列表嵌套字典的方式更加推荐第2种列表推荐字典的方式,更好用。data\id.csv数据为:代码如下所示:1importcsv2importos34importopenpyxl567defg......
  • 集合框架(一) Java中Map的常见方法的使用及循环的五种方式
    Map是Java中的一种集合,它是一种键值对的映射表,可以根据键快速获取对应的值。@[toc]##1.常见使用方式以下是Java中Map的常见方法使用示例及运行结果:###1.1存储键值对使用put()方法向Map中添加键值对:```javaMap<String,Integer>map=newHashMap<>();map.put("apple",10......
  • 函数性质的给出方式 | 思维导图
    ......
  • pytest + yaml 框架 -39.多账号操作解决方案
    前言最近有小伙伴提到,有写场景需要用到2个账号来回切换操作该如何解决。(备注:从v1.2.4以后新版本不再公开,新功能内部VIP学员可以使用,公开版本仅解决bug,不提供新功能了。)先获取账号token前面教程有讲到全局登录一次,后面所有的请求都会拿着全局登录的账号token去访问请求。现在......
  • Excel合并单元格的缺点解决方式
    背景99%的人在创建表格的一个标题,都喜欢使用合并单元格的功能但是由于使用Excel的合并单元格,在数据分析统计的时候出现了一些问题复制粘贴数据时,由于有合并单元格,不能直接复制粘贴移动整列的位置,不能快速移动使用VLOOKUP函数时,无法直接选中列区域,只能手动选中单元格区域......
  • 低代码部署方式大揭秘:满足你的多种选择
    本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。、前言低代码开发平台为企业提供创新的应用程序开发和部署方法,让非技术人员也能够轻松创建和发布应用程序。通过直观的图形化界面和少量编码,企业可以......
  • 【pytest】基于钩子函数与conftest实现多套环境切换
    项目路径config.pyfromutils.connect_mysqlimportDbConnectclassBaseConfig:VERSION="v1.0"EMAIL="[email protected]"APPID="10086"classTestConfig(BaseConfig):BASE_URL="http://xxxx:8201"......
  • ASP.NET Core Web API设置响应输出的Json数据格式的两种方式
    前言在ASP.NETCoreWebAPI中设置响应输出Json数据格式有两种方式,可以通过添加System.Text.Json或Newtonsoft.JsonJSON序列化和反序列化库在应用程序中全局设置接口响应的Json数据格式,本文示例使用的是新的MinimalAPI模式。JSON序列化和反序列化库System.Text.JsonSystem.Te......
  • 【python入门之pip换源问题】---pip换源的方式
    【一】PIP更换源包【1】问题描述在使用Python时,我们经常需要用到pip安装第三方包。但是,在某些情况下,由于网络速度慢或者其他各种原因,pipinstall会非常慢,甚至可能无法完成。为了解决这个问题,我们提供以下几种方法。「解决方法」【第一种】永久更换pip源一般来说,默认使......
  • 基于Ubuntu系统Nginx的两种安装方式
    一、直接apt安装**如果本机安装了nginx,卸载nginxapt-get--purgeautoremovenginx检查本机是否还有nginx程序在后台运行,如果有直接kill掉。ps-ef|grepnginx1、默认版本安装方便简单,很多依赖都自动给安装好了,一个命令即可:apt-getupdateapt-getinstallnginx......