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

发布时间 2023-11-02 12:43:09作者: 上海-悠悠

前言

最近有小伙伴提到,有写场景需要用到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]