这可能是一个相对简单的问题,但我很难找到其他答案。
我正在做一个小的 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/