Python:知道函数是从单元测试调用的吗?
Python: know function is called from a unittest?
有没有办法在 Python 中知道某个函数是从单元测试执行还是调试的上下文中调用的 运行?
对于上下文,我正在尝试对使用执行数据库调用的函数的代码进行单元测试。为了避免在该函数的测试期间调用数据库(数据库调用是单独测试的),我试图让 DB IO 函数了解它们的环境,并在单元测试中调用它们时进行模拟,并在调试期间记录其他变量运行.
我目前的方法是 read/write 环境变量,但这似乎有点矫枉过正,我认为 Python 必须有更好的机制。
编辑:
这是我尝试单元测试的函数示例:
from Database_IO import Database_read
def some_function(significance_level, time_range)
data = Database_read(time_range)
significant_data = data > significance_level
return significant_data
在我看来,如果您编写的函数在测试时以不同的方式运行,那么您并不是在真正测试它。
为了测试函数,我 mock.patch()
数据库对象,然后检查它是否已在您的函数中正确使用。
开始使用mock库最难的就是找the correct object to replace。
在您的示例中,如果在 your_module
中从 Database_IO
模块导入 Database_read
对象,您可以使用类似于以下的代码对其进行测试
with mock.patch('your_module.Database_read') as dbread_mock:
# prepare the dbread_mock
dbread_mock.return_value = 10
# execute a test call
retval = some_function(3, 'some range')
# check the result
dbread_mock.assert_called_with('some range')
有没有办法在 Python 中知道某个函数是从单元测试执行还是调试的上下文中调用的 运行?
对于上下文,我正在尝试对使用执行数据库调用的函数的代码进行单元测试。为了避免在该函数的测试期间调用数据库(数据库调用是单独测试的),我试图让 DB IO 函数了解它们的环境,并在单元测试中调用它们时进行模拟,并在调试期间记录其他变量运行.
我目前的方法是 read/write 环境变量,但这似乎有点矫枉过正,我认为 Python 必须有更好的机制。
编辑: 这是我尝试单元测试的函数示例:
from Database_IO import Database_read
def some_function(significance_level, time_range)
data = Database_read(time_range)
significant_data = data > significance_level
return significant_data
在我看来,如果您编写的函数在测试时以不同的方式运行,那么您并不是在真正测试它。
为了测试函数,我 mock.patch()
数据库对象,然后检查它是否已在您的函数中正确使用。
开始使用mock库最难的就是找the correct object to replace。
在您的示例中,如果在 your_module
中从 Database_IO
模块导入 Database_read
对象,您可以使用类似于以下的代码对其进行测试
with mock.patch('your_module.Database_read') as dbread_mock:
# prepare the dbread_mock
dbread_mock.return_value = 10
# execute a test call
retval = some_function(3, 'some range')
# check the result
dbread_mock.assert_called_with('some range')