Python单元测试-可能一直失败直到通过?

Python单元测试-可能一直失败直到通过?,python,unit-testing,python-unittest,Python,Unit Testing,Python Unittest,假设有一个测试函数,它通过一系列不同的数字进行测试。这些数字以递增的顺序列出,这样一旦你通过了某个数字(通过循环),结果就可以接受,我就可以通过测试。(这意味着在通过编号之前的所有编号都是失败的)。现在我已经找到了可接受的数字,无论列表中是否有更多的数字,我都可以停止整个测试。因此,我基本上需要一种使用PythonUnitTest“失败直到通过”的方法。有没有办法使用unittest中的内置方法来实现这一点?我粘贴了一段代码片段,以便更好地传达我需要做的事情 def test_numbers(s

假设有一个测试函数,它通过一系列不同的数字进行测试。这些数字以递增的顺序列出,这样一旦你通过了某个数字(通过循环),结果就可以接受,我就可以通过测试。(这意味着在通过编号之前的所有编号都是失败的)。现在我已经找到了可接受的数字,无论列表中是否有更多的数字,我都可以停止整个测试。因此,我基本上需要一种使用PythonUnitTest“失败直到通过”的方法。有没有办法使用unittest中的内置方法来实现这一点?我粘贴了一段代码片段,以便更好地传达我需要做的事情

def test_numbers(self):
    passing_number = 10     # can be any number randomly chosen in  number_list
    number_list = [8,9,10,11,12]   # example list of numbers to test
    for(number in number_list):
        # Do some operations with number...

        # Pass criteria - Not sure what to do here
        if(number == passing_number):
            # Then accept 'number' and stop the entire test.

根据定义,单元测试是一段自动的代码,它调用系统中的一个工作单元,然后检查关于该工作单元行为的单个假设单曲是这里的关键


如果给定输入的测试被认为失败,那么代码单元通过了测试。如果您想将测试应用于一系列输入,并确保它至少通过其中一个输入,那么这个循环应该放在一个代码单元上,而不是放在测试用例上。

检查通过后是否只需要中断?从某种意义上说,我想停止测试,但我不想实际使用中断(或类似的东西)因为我听说这是个坏习惯。你实际测试的代码是什么?不幸的是,我不能在这里粘贴实际的代码。但是我上面粘贴的代码片段显示了我试图在一般意义上做的事情。单元测试不必测试单个假设,也不必自动化…我并不是说我的更正确,但显然我们使用的是“单元测试”一词的不同定义。参考?单元测试必须只测试尽可能最小的(合理的)代码。例如,一个方法可能会在其他几个地方对数据进行更改,您可能希望验证每个方法是否有效。是MSDN关于这个主题的文章,尽管它与我们的讨论相关,可能会更清楚。我明白了,我使用“自动化”是因为它不是一个“手动”测试-简单的事实是,您编写了一个测试,使它自动化。此外,我使用的是理论意义上的“单元测试”——一个实际实现所称的“单元测试”可能由几个测试组成。这有意义吗?是的,我看到了混乱。考虑到与测试相关的特定含义,最好避免使用“自动化”一词。