使用鼻子测试时出现“没有这样的文件或目录”错误

问题描述

我有一个 Python 小项目,我最近在其中制作了一个 Conda 包。制作软件包本身就很痛苦,但是,我最近开始使用鼻子测试为此添加测试,这使它变得更加困难。

介绍:我的包接受某个输入,执行大量(量子化学)计算,然后在与调用包的脚本相同的目录中生成一个文件夹,其中包含输出数据(一些 .png 文件,. txt 文件和二进制文件

使用nosetests,我想检查这些输出文件是否应该是这样。我创建了一个 Python 测试脚本(使用 unittest),它创建输入并调用我的包。接下来,它导入创建的文件和测试文件。然而,这就是出错的地方。我收到此文件不存在的错误

FileNotFoundError: [Errno 2] No such file or directory: 'results\\output.txt'

目录如下:

project-path\
- tests\
  - test-script.py
  - results\
    - output.txt

我通过在 Anaconda 提示符下运行来调用鼻子:

project-path> nosetests tests

然后我使用以下命令在 Python 测试脚本中导入文件

result_file = open('results\\output.txt','r').read()

有谁知道这里出了什么问题?我认为这与测试在测试环境中执行的事实有关。在这种情况下:如何导入我的文件

解决方法

获取output.txt的绝对路径,确实是最可靠的定位打开方式。

import os,sys

basedir = os.path.dirname(sys.argv[0])
filename = "output.txt"
path = os.path.join(basedir,"results",filename)

result_file = open(path,'r').read()