'Python Unit test works With/without using side_effect
I need to test a python script script1.py in which it imports my another class
from lib.utils.ClassA import ClassA
lib = ClassA(xxxxxx)
lib.main()
Inside ClassA (ClassA.py) it imports python package pyspark.sql.SparkSession
from pyspark.sql import SparkSession
def main(self):
self.create_table(xxx)
Here is my test:
@patch("lib.utils.LibSparkSession.SparkSession")
def test_self(self, mock_spark):
# arrange
mock_spark.side_effect = mock_spark_session
lib = ClassA("ref")
lib.create_mapping_table = MagicMock()
# action
lib.main()
# assert
xxxxxxxx
For this line:
mock_spark.side_effect = mock_spark_session
I tried to replace it with this:
mock_spark = mock_spark_session
It also works.
Could someone explain why it works in both ways and which one is preferred?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
