unittest框架

unittest框架的应用

示例
#!/usr/bin/python
# -*- coding: UTF-8 -*-


import unittest   #导入unittest库

class StringTestCase(unittest.TestCase):#所有的测试类都必须直接或间接的继承自unittest.TestCase类

#setUp(self)方法是一个钩子方法,在每个测试用例执行之前都会执行一次,是做数据初始化的好地方
    def setUp(self):
        self.test_string = "This is a string"
#定义了一个名为testUpper的测试方法,这个方法就是一个测试用例
#只有方法名以test开头的方法才是测试用例
    def testUpper(self):
        # Act and Assert
        self.assertEqual("THIS IS A STRING", self.test_string.upper())

#测试用例
    def testaa(self):
        self.assertEqual("aaa",self.aa())
        
 #函数       
    def aa(self):
        self.ww='aaa'
        return self.ww
#直接执行该python文件的话,就运行所有的测试类里的测试用例,也就是运行所有的以test开头的方法
if __name__ == '__main__':
    unittest.main()
    
  if __name__ == '__main__' 如何正确理解 
一个python的文件有两种使用的方法:
第一是直接作为脚本执行
第二是import到其他的python脚本中被调用(模块重用)执行。
因此if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,
在if __name__ == 'main':下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的

运行的原理:
每个python模块(python文件,也就是此处的test.py和import_test.py)都包含内置的变量__name__,当运行模块被执行的时候,__name__等于文件名(包含了后缀.py);如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。而“__main__”等于当前执行文件的名称(包含了后缀.py)。进而当模块被直接执行时,__name__ == 'main'结果为真.
unittest单元测试框架
unittest是python自带的单元测试框架,尽管其主要是为单元测试服务的,但我们也可以用它来做接口的自动化测试。

unittest框架为我们编写用例提供了如下的能力:

1.定义用例的能力。unittest框架有一套固有套路,可以让我们定义测试用例时更加简单和统一

2.断言的能力。unittest框架提供了一系列的断言

3.各种执行策略。通过test suit或者扩展的方式,我们可以自定义用例执行的策略 

原文地址:https://www.cnblogs.com/niuniumother/p/11277771.html