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.input
和self.expected
,如何使用单元测试来提升self.assertTrue
之类的相应断言?
答案 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)