【发布时间】:2019-07-04 12:49:17
【问题描述】:
这是我第一次尝试用 Python 编写单元测试。我有一个像这样的简单函数:
def sum_num(a, b):
return a+b
我想做单元测试,检查输入(a,b)不为空,输出不为空。
import unittest
class SumTest(unittest.TestCase):
def test_sum_output_not_null(self):
self.assertTrue(add_num(3,4))
def test_sum_input_not_null(self):
# How to check input (a and b) is not None ?
self.assertIsNotNone(a)
...
suite = unittest.TestLoader().loadTestsFromTestCase(SumTest)
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
我在单元测试运行中遇到错误..
test_sum_input_not_null (__main__.SumTest) ... ERROR
test_sum_output_not_null (__main__.SumTest) ... ok
======================================================================
ERROR: test_sum_input_not_null (__main__.SumTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "<command-1933936>", line 7, in test_sum_input_not_null
self.assertIsNotNone(a)
NameError: name 'a' is not defined
----------------------------------------------------------------------
Ran 2 tests in 0.000s
FAILED (errors=1)
Out[4]: <unittest.runner.TextTestResult run=2 errors=1 failures=0>
如何检查 a 和 b 不为空?也可能想检查 a 和 b 是否也是整数。我在某处读到有关 setup() 的信息。我需要这样做来测试函数的输入吗?
【问题讨论】:
-
你得到了错误,因为 a 从未定义..
-
我知道这一点。我不确定如何定义它以及在哪里定义它或如何将它传递到单元测试中。
-
您的单元测试需要检查函数/方法调用的结果。您可以在关键函数的主体中添加对空参数的检查。然后,您的测试可以调用具有不同参数的函数
-
单元测试基本上需要对任意输入进行测试,其中预期输出是已知的。因此,人们会期望一系列预定义单元测试的某些固定输入,您可以在其中针对预期输出进行断言。所以在这种情况下,你会做一些
asserts语句,输入(无,无)作为你的例子之一,看看它们返回什么 -
@BlueRineS 我刚开始尝试在 python 中进行单元测试......我不确定它与像你提到的那样在函数中进行定期检查有什么不同。如果是这样,为什么我们还需要单元测试?
标签: python python-unittest assertion