让pytest在测试脚本的基目录中查找

2024-09-30 03:23:23 发布

您现在位置:Python中文网/ 问答频道 /正文

在pytest中,我的测试脚本将计算结果与通过加载的基线结果进行比较

SCRIPTLOC = os.path.dirname(__file__)
TESTBASELINE = os.path.join(SCRIPTLOC, 'baseline', 'baseline.csv')
baseline = pandas.DataFrame.from_csv(TESTBASELINE)

有没有一种非样板的方法可以告诉pytest从脚本的根目录开始查找,而不是通过SCRIPTLOC获得绝对位置?在


Tags: csvpath脚本dataframepandaspytestosfile
1条回答
网友
1楼 · 发布于 2024-09-30 03:23:23

如果您只是在寻找与使用__file__等效的pytest,那么可以将request夹具添加到测试中并使用request.fspath

docs

class FixtureRequest
    ...
    fspath
        the file system path of the test module which collected this test.

所以一个例子可能看起来像:

def test_script_loc(request):
    baseline = os.path.join(request.fspath.dirname, 'baseline', 'baseline.cvs')
    print(baseline)

如果你想避免样板间的冲突,你不会从中获得太多好处(假设我理解你所说的“非样板”是什么意思)

就个人而言,我认为使用fixture更显式(在pytest习惯用法中),但我更喜欢将请求操作包装在另一个fixture中,这样我就知道我只是通过查看测试的方法签名来获取示例测试数据。在

下面是我使用的一个片段(修改以匹配您的问题,我使用子目录层次结构):

^{pr2}$

和样品使用

def test_script_loc(script_loc):
    baseline = script_loc.join('baseline/baseline.cvs')
    print(baseline)

相关问题 更多 >

    热门问题