Python单元测试如何测试调用另一个方法的方法
Python Unit test how to test a method which calls another method
我正在使用 python 的内置单元测试工具:unittest
class MyClass:
def a():
# some operations
self.spark = SparkSession.builder.config(xxxx).getOrCreate()
如何测试此方法?
因为 a()
直接调用 SparkSession 方法。
我要如何测试它?
使用unittest.mock.patch
修补SparkSession
。这是一个 self-contained single-file 示例,它尽可能接近您的示例代码并生成一个通过的 pytest
结果:
SparkSession = None
class MyClass:
def a(self):
# some operations
self.spark = SparkSession.builder.config('xxxx').getOrCreate()
from unittest.mock import patch
@patch('test.SparkSession')
def test_myclass_a(mock_spark_session):
MyClass().a()
请注意,如果我没有修补 SparkSession
,调用 MyClass().a()
将引发 AttributeError
,因为 SparkSession
否则为 None
。
MyClass
在我创建的名为 test.py
的文件中定义,所以我修补了 'test.SparkSession'
;你应该在被测模块而不是测试模块中修补它。
我正在使用 python 的内置单元测试工具:unittest
class MyClass:
def a():
# some operations
self.spark = SparkSession.builder.config(xxxx).getOrCreate()
如何测试此方法?
因为 a()
直接调用 SparkSession 方法。
我要如何测试它?
使用unittest.mock.patch
修补SparkSession
。这是一个 self-contained single-file 示例,它尽可能接近您的示例代码并生成一个通过的 pytest
结果:
SparkSession = None
class MyClass:
def a(self):
# some operations
self.spark = SparkSession.builder.config('xxxx').getOrCreate()
from unittest.mock import patch
@patch('test.SparkSession')
def test_myclass_a(mock_spark_session):
MyClass().a()
请注意,如果我没有修补 SparkSession
,调用 MyClass().a()
将引发 AttributeError
,因为 SparkSession
否则为 None
。
MyClass
在我创建的名为 test.py
的文件中定义,所以我修补了 'test.SparkSession'
;你应该在被测模块而不是测试模块中修补它。