如何为多个整数数组编写测试?

时间:2017-03-26 16:43:13

标签: python

Python的新手,我想通过测试我使用pytest或unittest编写的代码来学习Python编码。在这方面,我想知道如何测试关于多个数组的断言作为输入:

我有一个函数extractDifferentNumber,它的目的是返回一个整数,它不属于整数序列的其余部分:

def extractDifferentNumber(df):
    df_set = set(df)
    for each in df_set:
        if df.count(each) == 1:
            return each

从数字序列中提取不同的数字:

# print(extractDifferentNumber([10,11,10,10,10,10,10])) 11
# print(extractDifferentNumber([20,11,20,20,20]))  11
# print(extractDifferentNumber([1,1,1,1,2])) 2

现在我想使用unittest来验证我的函数是否返回了预期的结果:

class SingleDifferentNumberTestCase(unittest.TestCase):
    """Test for `myfunction.py`"""

    def setUp(self):
        self.input = [10,11,10,10,10,10,10]
        self.expected = [11]

    def test_is_different(self):
        """Is a number different then the others"""
        self.assertTrue(extractDifferentNumber())


if __name__ == '__main__':
    unittest.main()

在这方面,我有两个问题:

如何将多个数组/测试用例包含为self.inputself.expected,如何使用单元测试来提升self.assertTrue之类的相应断言?

1 个答案:

答案 0 :(得分:2)

每个add multiple methods只需以字母test开头:

  

通过继承unittest.TestCase创建测试用例。他们三个   单个测试使用名称以。开头的方法定义   字母test。这个命名约定告诉测试运行者   哪些方法代表测试。

     

每个测试的关键是调用assertEqual()来检查   预期结果; assertTrue()assertFalse()来验证条件;   或assertRaises()验证是否引发了特定异常。   使用这些方法代替assert语句进行测试   跑步者可累积所有测试结果并生成报告。

class SingleDifferentNumberTestCase(unittest.TestCase):
    """Test for `myfunction.py`"""

    def test_array_1(self):
        """Is a number different then the others"""
        self.assertEqual(extractDifferentNumber([10,11,10,10,10,10,10]), 11)

    def test_array_2(self):
        self.assertEqual(extractDifferentNumber([20,11,20,20,20]), 11)

    def test_array_3(self):
        self.assertEqual(extractDifferentNumber([1,1,1,1,2]), 2)