Unittest的使用
一、简介
unittest是一个python版本的单元测试框架,可以用于python的单元测试
特点:
自动化测试用例的组织和管理
提供丰富的比较方法,完成结果的检查
提供执行过程数据,如:执行时间、执行结果等
• 语法
Test Case:一个TestCase实例就是一个测试用例,即一个test开头的测试函数。
Test Fixture:用于测试前的环境初始化和测试后的环境清理,通过setUp函数和tearDown函数完成。
Test Runner:unittest单元测试框架提供了TextTestRunner类来运行多个Test Suite或test case。
Test Suite:一个功能测试需要很多Test Case,可以多个测试用例统一进行执行,把多个用例加到一个Test Suite中。
 
• 测试模板
Import unittest
class Test(unittest.TestCase):
     @classmethod   #setUpClass只执行一次。如果使用setUp一个测试用例执行一次
     def  setUpClass(self):
         print(“测试开始”)
     def  testoo1(self):
         print(“测试用例一”)def  testjf002(self):
print(“测试用例二”)
     def  testcf003(self):
        print(“测试用例三”)@classmethod  #teraDownClass执行一次 如果使用teraDown一个测试用例执行一次
     def  tearDown(self):   
        print(“测试结束’)#执行测试
If  ‘__name__’ ==’__main__’:
    Unittest.main()
 
• 断言
   断言方法是 unittest 框架提供的一组方法,可以通过这些方法完成期望结果和实际结果的对比。常用方法有:
assert+空格+要判断语句+逗号+“报错语句”   python提供
assertEqual(a,b,msg=None)  检查a==b,不等则报错
assertNotEqual(a,b,msg=None)  检查a!=b,相等则报错
assertIn(a,b,msg=None)  检查a in b,不在报错
assertNotIn(a,b,msg=None)  检查a not in b,在报错
assertTrue(a,msg=None)  检查表达式a成立,不成立报错
assertFalse(a,msg=None) 检查表达式a不成立,成立报错assertIsInstance(obj,cls,msg=None) 检查obj是cls一个实例,是则pass,不是就报错
assertNotIsInstance(obj,cls,msg=None)检查obj不是cls一个实例,不是则pass
• 执行的方法
#执行测试用例方法一
 # if __name__ =="__main__":
 #     unittest.main()

 #执行测试用例方法二
 #创建测试套件
  suite = unittest.TestSuite()
  #添加测试用例
  suite.addTest(Test('testcf004'))
 #运行测试套件
  runobj = unittest.TextTestRunner()
  runobj.run(suite)


 #执行测试用例方法三(批量导入)
 #创建测试套件、添加测试用例
 testsuite = unittest.defaultTestLoader.discover(r'./\test001',pattern='unittest断言.py')
 #运行测试套件
  runobj = unittest.TextTestRunner()
  runobj.run(testsuite) 
 
• 生成HTML测试报告
自动化测试执行完成以后,需要输出一个完整的测试报告,供测试人员查看测试执行情况,确认自动化测试执行发现的缺陷情况。
HTMLTestRunner是Python标准库的unittest单元测试框架的一个扩展,可以生成一个可读性很强的HTML格式的测试报告。
下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
下载HTMLTestRunner.py文件,然后将其复制到 D:\Python\Python37\Lib 下(以实际安装目录为准)
import  HTMLTestRunner
 #创建测试套件、添加测试用例testsuite = unittest.defaultTestLoader.discover(r'./\test001',pattern='unittest断言.py')
 wenjian = open("测试报告.html",mode="ab")  #创建存储测试报告的HTML文件#使用HTMLTestRunner方法执行测试套件,打印测试报告
 HTMLTestRunner.HTMLTestRunner(stream=wenjian,title="简易计算器测试报告",description="简易计算器").run(testsuite)