Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中进行单元测试以检查输入不为null_Python_Python Unittest_Assertion - Fatal编程技术网

如何在Python中进行单元测试以检查输入不为null

如何在Python中进行单元测试以检查输入不为null,python,python-unittest,assertion,Python,Python Unittest,Assertion,这是我第一次尝试用Python编写单元测试。我有一个简单的函数,如下所示: def sum_num(a,b): 返回a+b 我想做单元测试来检查输入(a,b)是否为null,输出是否为null 导入单元测试 类SumTest(unittest.TestCase): def测试总和输出非空(自): self.assertTrue(添加数量(3,4)) def test_sum_input_not_null(自): #如何检查输入(a和b)是否为无? 赛尔夫·斯诺特(a) ... suite=un

这是我第一次尝试用Python编写单元测试。我有一个简单的函数,如下所示:

def sum_num(a,b):
返回a+b
我想做单元测试来检查输入(a,b)是否为null,输出是否为null

导入单元测试
类SumTest(unittest.TestCase):
def测试总和输出非空(自):
self.assertTrue(添加数量(3,4))
def test_sum_input_not_null(自):
#如何检查输入(a和b)是否为无?
赛尔夫·斯诺特(a)
...
suite=unittest.TestLoader().loadTestsFromTestCase(SumTest)
runner=unittest.TextTestRunner(详细度=2)
runner.run(套房)
我在单元测试运行中遇到错误

test\u sum\u input\u not\u null(\uuuu main\uuuu.SumTest)。。。错误
测试\u总和\u输出\u非\u空(\u主\u.SumTest)。。。好啊
======================================================================
错误:test\u sum\u input\u not\u null(\u主\u.SumTest)
----------------------------------------------------------------------
回溯(最近一次呼叫最后一次):
文件“”,第7行,在测试中\u求和\u输入\u非\u空
赛尔夫·斯诺特(a)
NameError:未定义名称“a”
----------------------------------------------------------------------
在0.000秒内运行了2次测试
失败(错误=1)
出[4]:
如何检查a和b是否不为空?还可能需要检查a和b是否也是整数。我在某个地方读到关于setup()的内容。我需要这样做来测试函数的输入吗

我想做单元测试来检查输入(a,b)是否为null,输出是否为null

要么你还不明白测试的目的,要么你在问一些与TDD相关的问题

当出现这种情况时,您不需要测试,而是测试您的函数是否处理得很好

因此,您应该创建测试函数并在其中进行调用,如:

def test_when_a_is_null(self):
    self.assertIsNotNone(add_num(None, 5))
当b为None和两者都为None时,情况类似

但是,这意味着您的函数应该处理以下条件:

def add_num(a, b):
    if a is not None and b is not None:
        return a + b
    elif a is not None:
        return a
    elif b is not None:
        return b
    return 0

你之所以出错,是因为a从未定义过..我知道这一点。我不知道如何定义它,在哪里定义它,或者如何将它传递到单元测试中。您的单元测试需要检查函数/方法调用的结果。可以在关键函数体中添加空参数检查。然后,您的测试可以使用不同的参数调用函数。IT测试基本上需要测试任意输入,其中预期的输出是已知的。因此,对于一系列预定义的unittest,您可能会期望某些固定的输入,在这些测试中,您会根据预期的输出进行断言。所以在本例中,您将使用输入(None,None)作为示例之一执行一些
断言
语句,以查看它们是什么return@BlueRineS我刚刚开始在python中尝试单元测试……我不确定它与您提到的在函数中进行常规检查有什么不同。如果是这样,为什么我们还需要单元测试?
如果a不是None,b不是None
可以简化为
如果不是a和b
,就我所知不,试试(None,False)。当然,这是目的,因为这两个参数都不是None。问题是关于值为null(在Python中没有对应的值),所以答案是关于这一点的。顺便说一句,1+False等于1。是的,我知道。这就是为什么我编辑了我的评论(在我意识到之后),以包括当您添加它们时它实际上是有效的XD