在我的python应用程序中,我打开了mp3文件,其中包含从该程序开始的相对路径。为简单起见,我对项目here中遇到的问题做了最小化的再现。
基本上,我有这样的结构:
src
└─ main.py
test
└─ test_main.py
在main.py
中,我有一个简单的函数可以打印并返回当前工作目录:
def get_cwd() -> str:
directory = os.path.basename(os.getcwd())
print('Current directory =', directory)
return directory
因此,如果我cd
进入src
文件夹并运行python main.py
,我会看到:
Current directory = src
这是理想的行为,因为在我的程序中,mp3文件的文件路径是相对于src
的。
当我尝试编写测试时出现问题。无论我通过了什么--start-directory
和--top-level-directory
,我似乎都无法通过这样的测试:
def test_get_cwd(self):
print('testing get_cwd()')
current_dir = get_cwd()
self.assertIsNotNone(current_dir)
self.assertEqual(current_dir, 'src')
问题:如果将测试保存到其他目录中,如何将它们像在特定目录的上下文中一样运行?
约束:
from
src.main import get_cwd
答案 0 :(得分:1)
一个选项是mock由places
给定的值,返回值为os.path.basename
"src"
答案 1 :(得分:1)
有一个os
函数可以更改目录,请尝试将os.chdir('src')
添加到测试中。
import unittest
import os
from src.main import get_cwd
class TestMain(unittest.TestCase):
def test_get_cwd(self):
os.chdir('src')
print('testing get_cwd()')
current_dir = get_cwd()
self.assertIsNotNone(current_dir)
self.assertEqual(current_dir, 'src')