Python基础知识:测试代码

1、Python标准库中的模块unittest提供了代码测试工具。

  单元测试用于核实函数的某个方面没有问题;

  测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求。

  通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明');在你自己眼中,你是你自己(__name__ == '__main__')

  if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;

    当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

2、测试函数:首先要创建一个包含一些列针对一个函数的单元测试的类,类的命名最好看起来和被测试的函数相关,并包含Test,这个类必须继承unittest.TestCase类

  这个测试类中每一种方法命名都要以test_开头,运行测试文件时,所有已test打头的方法都会自动运行

#城市-国家-人口
import unittest  #调用unittest模块
from city_functions import get_formatted_city #调出被测试函数
class CitiesTestCase(unittest.TestCase):#创建一个继承unittest.TestCase的类
    def test_city_country(self):
        '''测试能否正确处理这样的格式'''
        formatted_city = get_formatted_city('new york','america')
        self.assertEqual(formatted_city,'New York,America')
    def test_city_country_population(self):
        formatted_city = get_formatted_city('new york', 'america','5000')
        self.assertEqual(formatted_city, 'New York,America - Population 5000')
if __name__ == '__main__':
    unittest.main()

3、测试类

  setUp()方法,让我们只需创建对象一次,每个测试方法中都可以使用它们

#给员工增加年薪
import unittest
from employee import Employee
class TestEmployee(unittest.TestCase):
    #setUp()方法,让我们只需创建对象一次,每个测试方法中都可以使用它们
    def setUp(self):
        self.new_employee =Employee('james','lebran',10000)
        
    def test_give_default_raise(self):#测试以默认值增加年薪
        self.new_employee.give_raise()
        self.assertEqual(self.new_employee.annual_salary,15000)
    def test_give_costum_raise(self):#测试以特定值增加年薪
        self.new_employee.give_raise(10000)
        self.assertEqual(self.new_employee.annual_salary, 20000)
if __name__ == '__main__':
    unittest.main()

4、测试类中必须包含一个断言方法,用来核实得到的结果是否与期望的结果一致。

  unittest Module 中的断言方法:

    assertEqual(a,b)      --核实a == b
assertNotEqual(a,b) --核实a != b
assertTrue(x) --核实x为True
assertFalse(x) --核实x为False
assertIn(item,list) --核实item在list中
assertNotIn(item,list)--核实item不在list中
posted @ 2018-11-09 13:58  Charlie大夫  阅读(709)  评论(0编辑  收藏  举报