Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 对私有回调工厂进行单元测试_Python 3.x_Callback_Python Unittest_Private Methods - Fatal编程技术网

Python 3.x 对私有回调工厂进行单元测试

Python 3.x 对私有回调工厂进行单元测试,python-3.x,callback,python-unittest,private-methods,Python 3.x,Callback,Python Unittest,Private Methods,我正在尝试使用alarm manager类为私有回调工厂创建单元测试。我不想直接测试私有方法,因为我认为这违反了TDD的良好实践,但我无法找到一个好的方法来测试它 请不要只告诉我我的代码不好(我已经知道了!)。我只是想知道是否可以使用unittest框架来测试这个问题,或者是否需要重新设计代码 我的班级是一个警报管理者,负责管理警报的创建、调度和声音。创建报警时,它将通过回调函数传递给计划程序。要创建此回调函数,有一个私有回调工厂,它接收alarm对象以生成自定义回调(同时从manager类捕获

我正在尝试使用alarm manager类为私有回调工厂创建单元测试。我不想直接测试私有方法,因为我认为这违反了TDD的良好实践,但我无法找到一个好的方法来测试它

请不要只告诉我我的代码不好(我已经知道了!)。我只是想知道是否可以使用unittest框架来测试这个问题,或者是否需要重新设计代码

我的班级是一个警报管理者,负责管理警报的创建、调度和声音。创建报警时,它将通过回调函数传递给计划程序。要创建此回调函数,有一个私有回调工厂,它接收alarm对象以生成自定义回调(同时从manager类捕获一些变量)

我遇到的问题是,除非我使用调度器的全部功能,否则回调永远不会执行,但显然,要确保它在合理的时间内执行,修补时间会带来很多麻烦。此外,回调永远不会返回给用户,因此没有简单的检查方法(甚至在那里调用它)

manager类大致类似于下面的代码:

类管理器:
定义初始化(自):
self.\u scheduler=alarm.scheduler.scheduler()
self.\u player=sound.player.player()
def创建报警(自身、名称、新报警):
self.\u调度程序。添加作业(名称,新报警。查找下一个报警()\
self.\u创建\u回调(名称、新\u报警))
定义创建回调(自身、名称、回调报警):
def callback():
self.\u player.play(回调\u报警。获取\u播放())
返回回调

总的来说,如果我将调度程序设置为模拟对象,是否有办法以某种方式提取回调对象。或者是否有其他聪明的方法来测试回调是否在做它应该做的事情?

“这违反了TDD良好实践”您为什么在意?反正你不是在做TDD。@Goyo你觉得你可以详细解释一下这个评论吗。很明显,我肯定是做了一些非常错误的事情,让你得出结论,我不是从这么小的信息中进行TDD的。很显然,你编写的代码没有经过测试,现在你不知道如何测试它。如果您先编写测试(如在TDD中),您就不会在这一点上气喘吁吁了。在测试之前,我“编写”的唯一代码是_create_回调函数,它纯粹是为了帮助说明我正在尝试做什么。如果设计一个测试来确保回调被正确创建是如此容易,那么为什么你没有回答这个问题……我不能回答这个问题,因为我不理解它。我不明白在编写
\u create\u callback()
之前,练习
create\u alarm()
的测试是如何工作的,因为前者调用后者。我不明白“回调已正确创建”是什么意思。
Manager
的客户如何知道自己是否知道?“这违反了TDD良好实践”你为什么在意?反正你不是在做TDD。@Goyo你觉得你可以详细解释一下这个评论吗。很明显,我肯定是做了一些非常错误的事情,让你得出结论,我不是从这么小的信息中进行TDD的。很显然,你编写的代码没有经过测试,现在你不知道如何测试它。如果您先编写测试(如在TDD中),您就不会在这一点上气喘吁吁了。在测试之前,我“编写”的唯一代码是_create_回调函数,它纯粹是为了帮助说明我正在尝试做什么。如果设计一个测试来确保回调被正确创建是如此容易,那么为什么你没有回答这个问题……我不能回答这个问题,因为我不理解它。我不明白在编写
\u create\u callback()
之前,练习
create\u alarm()
的测试是如何工作的,因为前者调用后者。我不明白“回调已正确创建”是什么意思。
Manager
的客户如何知道它是否有?