尽管满足要求

时间:2016-12-18 11:29:18

标签: python unit-testing assertion

我正在做一个在线python课程,需要我完成一些练习才能进步。本课程的初学者表示,每个测试都有用户必须满足的可见和隐藏要求。在这种情况下,probelem语句如下:

  

编写一个名为manipulate_data的函数,其作用如下:   给定整数列表时,返回一个列表,其中第一个元素是正数的数量,第二个元素是负数的总和。   注意:将0视为正面。

我想出了这个,我认为除了单元测试用例的第6行之外,它可以通过可见的要求

def manipulate_data(listinput):
    report = [0,0]
    if type(listinput) != list:
    #I may need some work here.. see unit test line 6
        assert "invalid argument" 
    for digit in listinput:
    #is an even number so we increment it by 1
        if digit >= 0 and type(digit) == int: 
            report[0] += 1
    #number is less than zero, adds it sum
        elif digit < 0 and type(digit) == int:
            report[1] += digit
    return report

EveryTime我运行代码,我总是得到这个错误消息表明我的代码通过2个测试中的三个,我假设是test_only_list_allowed(self)我对这种事情并不是很有经验,我需要帮助。 enter image description here

Unit Test

1 个答案:

答案 0 :(得分:0)

测试显示代码期望字符串返回assert会引发AssertionError例外。您希望返回与assertEquals()测试正在查找的字符串相同的字符串,因此'Only lists allowed',而不是msg参数(在测试失败时显示

而不是使用assert使用return,并返回预期的字符串:

if type(listinput) != list:
    return "Only lists allowed" 

请注意,通常您使用isinstance()来测试类型:

if not isinstance(listinput, list):
    return "Only lists allowed" 
for digit in listinput:
    if not isinstance(digit, int):
        continue
    if digit >= 0: 
        report[0] += 1
    elif digit < 0:
        report[1] += digit

我使用单个测试进行整数而不是在每个分支中进行测试。您甚至可以使用不支持与0进行比较的类型,因此您希望首先完成该测试。