zoukankan      html  css  js  c++  java
  • 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中
  • 相关阅读:
    BZOJ 3629 JLOI2014 聪明的燕姿 约数和+DFS
    [BZOJ3594] [Scoi2014]方伯伯的玉米田 二维树状数组优化dp
    BZOJ 3319 黑白树 并查集+线段树
    BZOJ 2500 幸福的道路(race) 树上直径+平衡树
    BZOJ1875: [SDOI2009]HH去散步 图上边矩乘
    【BZOJ3887】【Usaco2015 Jan】Grass Cownoisseur Tarjan+Spfa
    NOIP2010 引水入城 贪心+DFS
    【BZOJ3038】上帝造题的七分钟2 线段树
    COGS 930. [河南省队2012] 找第k小的数 主席树
    BZOJ2631 tree(伍一鸣) LCT 秘制标记
  • 原文地址:https://www.cnblogs.com/charliedaifu/p/9934720.html
Copyright © 2011-2022 走看看