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

2024-10-02 22:27:36 发布

您现在位置: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,以及如何使用unittest生成适当的断言,例如self.assertTrue?你知道吗


Tags: 函数selfdfforifdef数字整数
1条回答
网友
1楼 · 发布于 2024-10-02 22:27:36

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

A testcase is created by subclassing unittest.TestCase. The three individual tests are defined with methods whose names start with the letters test. This naming convention informs the test runner about which methods represent tests.

The crux of each test is a call to assertEqual() to check for an expected result; assertTrue() or assertFalse() to verify a condition; or assertRaises() to verify that a specific exception gets raised. These methods are used instead of the assert statement so the test runner can accumulate all test results and produce a report.


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)        

相关问题 更多 >