如何在Python中进行单元测试以检查输入不为null
这是我第一次尝试用Python编写单元测试。我有一个简单的函数,如下所示:如何在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
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