pytest fixture 函数有没有办法给普通方法 (非 test 测试方法) 调用?
场景是这样的:
首先是增加了 2 个 pytest 命令行参数,env 和 project,然后定义了 一 个 fixture 函数,是获取项目环境配置的
然后 test 方法是执行 requests 请求接口,我是希望只传接口的 path,接口的域名根据我命令行的 env 和 project 去配置文件中读取出来,然后再拼接成完整的接口 url
这个拼接的过程我是想单独封装在一个 build_url 方法中,那么这个 build_url 方法要怎么能用到 pytest 的 fixture 方法呢?
或者有其他什么思路能解决我这个问题的?折磨我 2 天了
伪代码如下
import pytest
import requests
@pytest.fixture()
def env_config(request):
"""
根据命令行参数获取配置文件数据
:param request:
:return:
"""
config_path = Path(request.config.rootdir,
"config",
request.config.getoption("project"),
f'{request.config.getoption("environment")}.yaml')
return Yaml(config_path).data
def request(path, method, data):
return requests.request(method,build_url(path), json=data)
def build_url(path):
# 这里怎么可以用到env_config这个fixture返回的数据?
return host+path
def test_login():
r = request('login', 'post', {'username': 'admin'})
assert r.status_code == 200