从模块中模拟Python类无法导入

时间:2018-02-06 21:48:32

标签: python python-3.x unit-testing mocking

我有一个Python脚本放在远程供应商服务器上,然后运行该服务器导入模块(本地无法使用)。

from onlyonremoteserver.remoteaccessonly import CustomRemoteClass


sensor = CustomRemoteClass()
    sensor.add_channel(channel_name="Status",unit="Count",value=status,is_limit_mode=True,limit_max_error=1.5,limit_max_warning=0.5)
    sensor.add_channel(channel_name="Number Of Data Nodes",unit="Count",value=output['number_of_data_nodes'])
    sensor.add_channel(channel_name="Number of Nodes",unit="Count",value=output['number_of_nodes'])

我如何模拟一个我无法访问的类?是否可以存根已知的类名add_channel func(及其参数)

我也在想这就是写入方法,也许我只是编写不同的运行案例,如果远程执行则完全跳过本节。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

YES! unittest has mocking built in

使用单元测试来开发代码是可行的方法 如果您使代码执行case语句或try / catch块以查看您是否处于测试环境与部署之间,那么您将受到客户的抨击。或者,希望你会。因此,使用他们的API来创建一个模拟类,unittest将允许您利用该模拟类,而不必在导入语句中放置那些可怕的try / catch块。