如何为我的函数编写单元测试函数?

时间:2017-10-12 15:51:23

标签: python unit-testing

这是我创建的一个功能:

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)

我对单元测试正在做什么感觉不太清楚,但并不完全明白。

2 个答案:

答案 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')

那里有很多documentation and examples

答案 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的简要说明。