python - 仅在 Python 中定义用于测试的变量

标签 python testing python-unittest

这可能是一个相对简单的问题,但我很难找到其他答案。

我正在做一个小的 Python 项目,我想以测试驱动的方式来做这件事。用户主目录中定义的文件夹中的文件操作对于程序来说非常重要,但我希望这些操作发生在单独的临时文件夹中以进行测试。

有没有办法在我的应用程序中设置一个变量,如果该应用程序意识到它是作为测试环境的一部分运行的,那么该变量会有所不同吗?我目前的解决方法(def some_function(self, test=False) 或包含很多 @patch 装饰器)不是很优雅...

我在想一些类似的事情:

def return_home_folder():
    if testing:
        home = os.getcwd() + '/testrun'
    else:
        home = os.path.expanduser('~')
    returnvalue = home + '/appname/'
    return returnvalue

最佳答案

恕我直言,让一个函数在测试和生产中表现不同并不是一个好主意。测试的全部意义在于预测程序在生产中的行为方式,而改变行为会破坏它。

(单元测试不同于“试运行”,但这是一个单独的问题。)

我会选择这样的东西:

def get_app_folder():
    return os.path.join(os.path.expanduser("~"), "appname")

def test_get_app_folder():
    assert get_app_folder().startswith(os.path.expanduser("~"))
    assert get_app_folder().endswith("appname")

单元测试本身并没有太大的指导意义,但它们展示了如何解决对“测试模式”的需求。

关于python - 仅在 Python 中定义用于测试的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53099919/

相关文章:

python - 如何对在 __init__ 方法之外初始化的实例变量进行单元测试

python - 如何确保自定义函数在执行每个Python单元测试后运行?

python - 将常见的自定义身份验证功能应用于多个 Flask 项目

python - 按顺序在python脚本中运行函数

Python 正则表达式 : how to check if a character in a string is within the span of a regex matched substring?

python - 如何使用 selenium (Python) 获取一个元素和一个类?

windows-phone-7 - 在 Windows 模拟器中安装 .xap 文件

Python 计时 - 一定有更好的方法!

Python exec() 返回 None

每个函数的python时间测量