如何在pytest中使用测试资源(例如固定的yaml文件)?

Jac*_*cob 5 python testing pytest

我浏览了pytest网站上的文档,但没有找到使用“测试资源”的明确示例,例如在单元测试期间读取固定文件。类似于http://jlorenzen.blogspot.com/2007/06/proper-way-to-access-file-resources-in.html针对Java所描述的内容。

例如,如果我已将yaml文件签入源代码管理,那么编写从该文件加载的测试的正确方法是什么?我认为这归结为理解在类路径(PYTHONPATH?)等效的python上访问“资源文件”的正确方法。

这似乎应该很简单。有一个简单的解决方案吗?

Tom*_*Tom 1

我认为“资源文件”就是你在python中给它的任何定义(在Java中,资源文件可以与普通Java类捆绑到jar文件中,并且Java提供了库函数来访问这些信息)。

等效的解决方案可能是访问 PYTHONPATH 环境变量,将“资源文件”定义为相对路径,然后在 PYTHONPATH 中查找它。这是一个例子:

pythonpath = os.env['PYTHONPATH']
file_relative_path = os.path.join('subdir', 'resourcefile') // e.g. subdir/resourcefile
for dir in pythonpath.split(os.pathsep):
    resource_path = os.path.join(dir, file_relative_path)
    if os.path.exists(resource_path):
        return resource_path
Run Code Online (Sandbox Code Playgroud)

此代码片段返回 PYTHONPATH 上存在的第一个文件的完整路径。