我有一个项目,假设'my_project'使用以下结构调用:
my_project
|
tox.ini
setup.py
src
|
client.py
server.py
config.json
# other files
tests.py
Run Code Online (Sandbox Code Playgroud)
文件中定义的类client.py和server.py包含在文件夹 src 中的每个文件的使用信息config.json和tests.py实现py.test测试。在客户端/服务器文件中,我按如下方式读取配置文件:
with open('./config.json') as infile:
self.parameters = json.load(infile)
Run Code Online (Sandbox Code Playgroud)
接下来,我创建了一个 tox.ini 文件,如下所示:
[tox]
envlist = py27,cov
[testenv]
#commands = py.test --cov=src/client.py src/tests.py -v
commands = py.test -sv --doctest-modules src/__init__.py src/tests.py
[testenv:py27]
commands = coverage erase
coverage run --source=src -m pytest
coverage report -m
deps = pytest
Run Code Online (Sandbox Code Playgroud)
但是当我运行tox命令时出现错误:"No such file or directory: 'config.json'". 如何设置正确的路径以确保tox可以找到所有必需的文件?
尝试打开'./config.json'将始终让 Python 在进程的当前目录中查找;这就是文件路径的工作方式。如果要在与正在打开的config.json文件相同的目录中打开文件,则.py需要包含包含该.py文件的目录的路径:
with open(os.path.join(os.path.dirname(__file__), 'config.json')) as infile:
Run Code Online (Sandbox Code Playgroud)