运行 python 特定目录上下文中的单元测试
Run python unittest in context of specific directory
在我的 python 应用程序中,我使用程序启动位置的相对路径打开 mp3 文件。为简单起见,我对我在项目 here.
中遇到的问题进行了最小复制
基本上,我有这样的结构:
src
└─ main.py
test
└─ test_main.py
在 main.py
中,我有一个简单的函数可以打印 returns 当前工作目录:
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
一个选项是 mock 由 os.path.basename
给出的值与 return 的值 "src"
import unittest
from mock import patch
from src.main import get_cwd
class TestMain(unittest.TestCase):
@patch('os.path.basename')
def test_get_cwd(self, basename):
basename.return_value = "src"
print('testing get_cwd()')
current_dir = get_cwd()
self.assertIsNotNone(current_dir)
self.assertEqual(current_dir, 'src')
有一个 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')
在我的 python 应用程序中,我使用程序启动位置的相对路径打开 mp3 文件。为简单起见,我对我在项目 here.
中遇到的问题进行了最小复制基本上,我有这样的结构:
src
└─ main.py
test
└─ test_main.py
在 main.py
中,我有一个简单的函数可以打印 returns 当前工作目录:
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
一个选项是 mock 由 os.path.basename
给出的值与 return 的值 "src"
import unittest
from mock import patch
from src.main import get_cwd
class TestMain(unittest.TestCase):
@patch('os.path.basename')
def test_get_cwd(self, basename):
basename.return_value = "src"
print('testing get_cwd()')
current_dir = get_cwd()
self.assertIsNotNone(current_dir)
self.assertEqual(current_dir, 'src')
有一个 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')