gpt4 book ai didi

python - 在特定目录的上下文中运行 python unittest

转载 作者:行者123 更新时间:2023-12-02 05:14:53 26 4
gpt4 key购买 nike

在我的 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导入get_cwd

最佳答案

有一个 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 - 在特定目录的上下文中运行 python unittest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52900441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com