pycharm PyTest:如何测试从项目中的另一个文件导入的函数

sdnqo3pr  于 2022-11-08  发布在  PyCharm
关注(0)|答案(1)|浏览(284)

因此,基本上我想测试我的API的顶层,通过提供必要的接口参数并利用Pytest来完成。
我有一script.py表示顶层的www.example.com,它看起来像这样:

def run_local
     'do something here'
return valid_values

在test.py这个文件中,我的装饰器的输入是一个.yaml文件,它在我的pycharm config中被设置为附加参数。

import pytest
import os
import sys
from parentdir.script import run_local

@pytest.fixture()
def run_config():
    run_parameters_dir = sys.argv[1]
    return config

def test_run_local_values(config, run_local):
    config = config
    valid_run_local = run_local(config)
    assert all(valid_run_local)

我收到的错误消息是:

  • 测试设置失败文件/test.py

默认测试_rub_local(配置,运行_本地):E找不到夹具'run_local'*
所以我无法在我的www.example.com文件中测试run_local函数script.py,因为我似乎无法在我的www.example.com文件中正确导入run_local函数test.py。我不想模拟任何东西,我实际上想用我在配置文件中导入的参数测试函数run_local。我该怎么办?

gdx19jrr

gdx19jrr1#

我认为你在这里混淆了一些概念。
1.看起来您正在使用run_local作为fixture
测试运行本地值(配置,运行本地)
此夹具不存在,因此出现错误。
1.如果你想导入函数并在测试中使用它,你必须在测试中调用函数,而不是将其作为参数传递给测试,如下所示:

from parentdir.script import run_local    

def test_run_local_values(config):
    config = config
    result = run_local(config)

1.此外,夹具“配置”不; t不存在,因此您无法将其传递给测试。
从您的问题来看,我认为最好的解决方案是创建run_local作为接受config的fixture。

from parentdir.script import run_local

@pytest.fixture()
def run_config():
    run_parameters_dir = sys.argv[1]
    return config

@pytest.fixture(run_config)
def run_local
    # 'do something here'
    return valid_values

def test_run_local_values(run_local):
    config = config
    valid_run_local = run_local(config)
    assert all(valid_run_local)

相关问题