python - 未找到文件 - Python 单元测试
问题描述
我有一个 python 代码要测试。这是一个简单的代码。文件夹结构如下。
.
├── code
│ ├── conf.json
│ ├── __init__.py
│ └── a.py
└── test
├── __init__.py
├── a_test.py
a.py 中的代码:
import json
conf_path = "conf.json"
def run():
with open(conf_oath,'r') as f:
conf = json.load(f)
print(conf)
a_test.py 中的代码:
import unittest
from os import sys, path
sys.path.append('../code')
from code import a
class Test(unittest.TestCase):
def test_run():
conf = a.run()
print(conf)
if __name__ == '__main__':
unittest.main()
当我运行时,python -m unittest test.a_test
我收到以下错误 -
No such file or directory: 'conf.json'
我哪里错了?如何纠正这个?
解决方案
文件的路径与您执行测试的位置相关,而不是测试文件所在的位置。您可以改为使用 os 库获取文件的完整路径。
import json
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
conf_path = os.path.join(dir_path, 'conf.json')
def run():
with open(conf_path, 'r') as f:
conf = json.load(f)
print(conf)
推荐阅读
- r - 在 R 中使用 apply() 来查找住房数据框中每个县的平均价格
- python - 在 Python 中对小部件进行子类化以与 Qt Designer 一起使用的最简单方法
- python - 如何刷新我的代码以便为调查提供新答案?
- ruby-on-rails - 如何在 rails/rspec 中捕获 ActiveRecord::RecordInvalid 错误
- python - 修改 __getitem__ 后无法切片列表
- if-statement - 创建一个 if 语句来检查一个对象的值并随后将一个值分配给另一个对象
- spring5 - ValangValidator 与 spring 5 的替代类
- oop - 从两个不同的类有条件地调用方法
- django - 使用 django 在线 Redis 后端
- r - 使用 tidyverse 从一个分组数据集中动态变异另一个数据集中的一个变量