Python 如何为返回方法的方法编写UnitTet

Python 如何为返回方法的方法编写UnitTet,python,unit-testing,Python,Unit Testing,我想为此编写一个单元测试 例如 assertEqual,assertTrue.. 但我不知道如何测试它,我已经对返回一些值或True/False的函数进行了单元测试。 我不想要任何代码只是概念如果函数成功,那么返回值将作为获取方法的参考。这意味着您可以使用unittest模块的assertEqual方法。如下图所示: def acquisition_required(method): def wrapped_method(self, *args, **kwargs): r

我想为此编写一个单元测试 例如

assertEqual,assertTrue..
但我不知道如何测试它,我已经对返回一些值或True/False的函数进行了单元测试。
我不想要任何代码只是概念

如果函数成功,那么返回值将作为获取方法的参考。这意味着您可以使用unittest模块的assertEqual方法。如下图所示:

def acquisition_required(method):
    def wrapped_method(self, *args, **kwargs):
        result=some complex code
        if not result:
            some code is here
        else:
            return method(self, *args, **kwargs)
return wrapped_method
注意:如果您的实现包含异常(例如:try Exception for error handling),则可以使用unittest模块的“assertRaises”方法测试异常情况。从

例如,在您的情况下(如果您想测试ValueError异常):


我设法做到了以下几点:

with self.assertRaises(ValueError):
    self.assertRaises(your_module.acquisition_required(method))

比较两种方法是否相等只是检查它们是否是相同的对象;不是很有用。我同意,但正如我看到的,这个函数是一个装饰器,在正确工作的情况下,它的返回值与输入对象是同一个对象。异常或错误处理等。。。与我在回答中提到的情况不同。我遇到了一些问题,例如如何在unittest文件中导入方法(参数)。您的操作方法相同:调用decorator返回的方法,并验证它是否生成预期值。@tobias_k我现在做了一些更正,一切正常
with self.assertRaises(ValueError):
    self.assertRaises(your_module.acquisition_required(method))
 with self.assertRaises(ValueError):
        self.assertRaises(your_module.acquisition_required(method))