这是我创建的一个功能:
def hab(h, a, b= None):
if b != None:
result = ("{} , {} , {}".format(h, b, a))
else:
result = ("{} , {}".format(h, a))
return result
我试图为我的函数编写单元测试,单元测试应该在提供两个或三个参数时断言函数的正确性。
这是我的框架:
class hab_Test_Class(unittest.TestCase):
def test_pass2(self):
def test_pass3(self):
# i'll use code below to run the unit test
t = hab_Test_Class()
suite = unittest.TestLoader().loadTestsFromModule(t)
unittest.TextTestRunner().run(suite)
我对单元测试正在做什么感觉不太清楚,但并不完全明白。
答案 0 :(得分:0)
通常情况下,你要做的是:
class NameAgeJob_Test_Class(unittest.TestCase):
def test_pass_string_input_no_b(self):
result = format_person_info('foo', 'bar')
self.assertEqual(result, 'foo , bar')
答案 1 :(得分:0)
假设您拥有main.py
def format_person_info(h, a, b= None):
if b != None:
a = ("{} , {} , {}".format(h, b, a))
else:
a = ("{} , {}".format(h, a))
return a
您可以在tests.py
:
import main
import unittest
class hab_Test_Class(unittest.TestCase):
def test_pass2(self):
return_value = main.format_person_info("shovon","ar")
self.assertIsInstance(return_value, str, "The return type is not string")
self.assertEqual(return_value, "shovon , ar", "The return value does not match for 2 parameters")
def test_pass3(self):
return_value = main.format_person_info("shovon","ar",18)
self.assertIsInstance(return_value, str, "The return type is not string")
self.assertEqual(return_value, "shovon , 18 , ar", "The return value does not match for 3 parameters")
# i will use code below to run the unit test
t = hab_Test_Class()
suite = unittest.TestLoader().loadTestsFromModule(t)
unittest.TextTestRunner().run(suite)
运行测试时,输出如下所示:
..
----------------------------------------------------------------------
Ran 2 tests in 0.016s
OK
现在让我们看看我们做了什么。我们使用assertIsInstance
检查了返回类型是否为我们所期望的字符串,并使用assertEqual
检查了两个和三个参数的输出。您可以使用assertEqual
的一组有效和无效测试来玩这个。官方文档在此官方文档Unit testing framework中有关于unittest的简要说明。