11import unittest
22from unittest .mock import patch , MagicMock , mock_open
3+ import pyvisa # Added import for pyvisa
34
45class TestFixes (unittest .TestCase ):
56
6- @patch ('Keithley_2400.Backends.IV_K2400_Loop_Backend_v10.sleep' , MagicMock ()) # Add mock for time.sleep to isolate the test
7+ @patch ('Keithley_2400.Backends.IV_K2400_Loop_Backend_v10.sleep' , MagicMock ())
78 @patch ('builtins.input' , side_effect = ['10' , '2' , 'test_output' ])
8- @patch ('Keithley_2400.Backends.IV_K2400_Loop_Backend_v10.Keithley2400' )
9+ @patch ('pyvisa.ResourceManager' ) # Patch pyvisa.ResourceManager
910 @patch ('matplotlib.pyplot.show' )
1011 @patch ('pandas.DataFrame.to_csv' )
11- def test_iv_k2400_fix (self , mock_to_csv , mock_plt_show , mock_keithley_class , mock_input ):
12+ def test_iv_k2400_fix (self , mock_to_csv , mock_plt_show , mock_rm , mock_input ):
1213 """
1314 This test verifies that the Keithley2400 is correctly mocked in the
1415 IV_K2400_Loop_Backend_v10 script, preventing real hardware calls.
1516 """
1617 from Keithley_2400 .Backends import IV_K2400_Loop_Backend_v10 as iv_backend
18+
19+ mock_keithley_instance = MagicMock ()
20+ mock_rm .return_value .open_resource .return_value = mock_keithley_instance
21+ mock_keithley_instance .query .return_value = "KEITHLEY INSTRUMENTS INC., MODEL 2400" # Simulate IDN query
22+
1723 iv_backend .main ()
18- mock_keithley_class .assert_called_once ()
24+ mock_rm .return_value .open_resource .assert_called_once_with ("GPIB::4" )
25+
1926
2027 @patch ('tkinter.Tk' )
2128 @patch ('tkinter.filedialog.asksaveasfilename' , return_value = 'test.csv' )
2229 @patch ('builtins.input' , side_effect = ['10' , '20' , '5' , '30' ])
23- @patch ('Lakeshore_350_340.Backends.T_Control_L350_Simple_Backend_v10.Lakeshore350' )
30+ @patch ('Lakeshore_350_340.Backends.T_Control_L350_Simple_Backend_v10.pyvisa.ResourceManager' ) # Patch pyvisa.ResourceManager
2431 @patch ('matplotlib.pyplot.show' )
2532 @patch ('builtins.open' , new_callable = mock_open )
2633 @patch ('Lakeshore_350_340.Backends.T_Control_L350_Simple_Backend_v10.time.sleep' , MagicMock ())
2734 @patch ('time.time' , side_effect = [1000 , 1002 , 1004 , 1006 , 1008 , 1010 ])
28- def test_t_control_l350_fix (self , mock_time , mock_open_file ,
29- mock_plt_show , mock_ls_class , mock_input , mock_file_dialog , mock_tk ):
35+ def test_t_control_l350_fix (self , mock_time , mock_open_file , mock_plt_show , mock_rm , mock_input , mock_file_dialog , mock_tk ):
3036 from Lakeshore_350_340 .Backends .T_Control_L350_Simple_Backend_v10 import main
31- main ()
32- mock_ls_class .assert_called_once ()
3337
34- if __name__ == '__main__' :
35- unittest .main ()
38+ mock_instrument_from_rm = MagicMock ()
39+ mock_rm .return_value .open_resource .return_value = mock_instrument_from_rm
40+ mock_instrument_from_rm .query .return_value = "LSCI,MODEL350,12345,1.0"
41+
42+ main ()
43+ mock_rm .return_value .open_resource .assert_called_once_with ("GPIB0::13::INSTR" )
0 commit comments