首页 > 其他分享 >pytest + yaml 框架 -39.多账号操作解决方案

pytest + yaml 框架 -39.多账号操作解决方案

时间:2023-11-28 11:06:15浏览次数:37  
标签:39 账号 url test8 yaml token pytest environ

前言

最近有小伙伴提到,有写场景需要用到2个账号来回切换操作该如何解决。
备注:从v1.2.4 以后新版本不再公开,新功能内部 VIP 学员可以使用,公开版本仅解决bug, 不提供新功能了。

先获取账号token

前面教程有讲到全局登录一次,后面所有的请求都会拿着全局登录的账号token去访问请求。
现在需要新增2个账号,那我们只需要得到2个账号的token即可

conftest.py 通过fixture去分别拿到test8 和 test9 账号的token

from pytest_yaml_yoyo.http_session import HttpSession


@pytest.fixture(scope="session")
def token1(environ):
    s = HttpSession(base_url=environ.BASE_URL)
    body = {
            "username": "test8",
            "password": "123456"
    }
    r = s.send_request("post", "/api/v1/login", json=body)
    token = r.json()['token']
    return token


@pytest.fixture(scope="session")
def token2(environ):
    s = HttpSession(base_url=environ.BASE_URL)
    body = {
            "username": "test9",
            "password": "123456"
    }
    r = s.send_request("post", "/api/v1/login", json=body)
    token = r.json()['token']
    return token

调用pytest_yaml_yoyo.http_session 内部封装的 HttpSession,只需传相对路径即可发搜请求。
base_url 地址通过 config.py 中设置的环境地址BASE_URL (参考多环境切换的配置), 获取方式:environ.BASE_URL

yaml 用例中传不同 token

test_more_user.yml

config:
  fixtures: token1,token2

user1:
-
  name: 账号test8操作
  request:
    url: /api/v1/userinfo
    method: get
    headers:
      Authorization: Token ${token1}
  validate:
    - eq: [$.code, 0]
-
  name: 账号test8继续操作
  print: test8继续操作

user2:
  name: 账号test9操作
  request:
    headers:
      Authorization: Token ${token2}
    url: /api/v1/userinfo
    method: get
  validate:
    - eq: [$.code, 0]

标签:39,账号,url,test8,yaml,token,pytest,environ
From: https://blog.51cto.com/u_15249893/8597074

相关文章

  • 【pytest】基于钩子函数与conftest实现多套环境切换
    项目路径config.pyfromutils.connect_mysqlimportDbConnectclassBaseConfig:VERSION="v1.0"EMAIL="[email protected]"APPID="10086"classTestConfig(BaseConfig):BASE_URL="http://xxxx:8201"......
  • 关键字 开发-05 读取yaml文件内容动态生成用例
    前言在第一篇文章中,我们讲过了通过钩子函数pytest_collect_file可以收集到yaml格式的用例,并且可以生成测试用例。想要动态生成测试用例,也就是动态生成测试函数,然后pytest收集到test开头的func,执行测试函数。关键代码如下所示:defrun_function(*args,**kwargs):print("测......
  • Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)
    Weblogic<10.3.6'wls-wsat'XMLDecoder反序列化漏洞(CVE-2017-10271)Weblogic的WLSSecurity组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。环境搭建cdweblogic/CVE-2017-10271docker-compose......
  • What's new in dubbo-go-pixiu v1.0.0
    dubbo原生网关dubbo-go-pixiuv1.0https://github.com/apache/dubbo-go-pixiu/releases/tag/v1.0.0-rc2正式发版了,项目从2019年一路走来,四年磨剑,感谢从铁城、张天到吕梦超三位负责人。目前,dubbo-go-pixiu可作为dubbo/dubbogo服务网关,也可作为dubbo/dubbogo服务的s......
  • CF1900 C Anji's Binary Tree 题解
    LinkCF1900CAnji'sBinaryTreeQuestion给出一个树,每个节点上有一个字母L/R/U,从\(1\)号根节点开始,L表示接下来走到左节点,R表示接下来走到右节点,U表示接下载走到父节点问,最少修改几个节点上的字母使得从根节点走到叶子节点Solution定义\(F_x\)表示从\(x\)走到叶......
  • 日常踩坑_maven打包显示user id 'xxx' is too big
    背景提要本身在win10下的环境,maven是可以正常打包的但在一切未动的条件下,将项目放到了linux环境下,发现报了一个莫名其妙的错goalorg.apache.maven.plugins:maven-assembly-plugin:3.1.1:singlefailed:userid'7543842'istoobig解决在pom.xml文件中插入posix,位置大概是......
  • Could not load dynamic library 'libnvinfer.so.7' 解决方法
    1.首先安装TensorRTpipinstalltensorrt2.找到tensorrt_libs目录,一般在~/.local/lib/python3.10/site-packages/tensorrt_libs/。目录下可以看到libnvinfer.so.8等文件注:有些教程说的是tensorrt目录,但是我在这个目录下面没找到文件3.创建symbollinks,这样TensorFlow才能找到......
  • 399元!华为首款Wi-Fi 7路由器今日预售:最高3600Mbps
    今天,华为正式官宣了其首款Wi-Fi7路由器——华为路由BE3Pro,1000M网口版售价399元,11月27日下午18:00开启预售,正式开售时间为12月8日10:00。据介绍,华为路由BE3Pro搭载了四核Wi-Fi7技术,最高速率3600Mbps,还支持芯片级协同的灵犀双Wi-Fi,可以为华为设备智能提速。华为路由BE3Pro在......
  • array([['B1', 'B3', 'Unnamed: 2', 'B4', 'Unnamed: 4&#03
    array([['B1','B3','Unnamed:2','B4','Unnamed:4','Unnamed:5'],   ['B2',nan,'B5',nan,nan,nan],   [nan,nan,nan,nan,nan,'B6']],dtype=object)......
  • Python Multiprocessing Pool's Task Scheduling
    mppool的任务调度遵循FIFO机制。对任务数组,逐个分配进程资源。如对于p0-pn,pi对应的是a[i]的资源。一般来说sizeof(a)>sizeof(p),即任务数大于进程资源数。此时,空闲的资源将进一步使用FIFO,选取任务进行执行,从而避免资源浪费。因此,在排布a[i]的时候,基本是不需要进行时长大小......