4.1 单元测试
是指对软件中的最小可测试单元进行检查和验证。

单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试

unittest 框架是 python的单元测试框架

unnitest = TestCase + TestResult 执行用例 + 结果

4.2 unittest

  • 用import语句引入unittest模块
  • 测试的类都继承于TestCase类
  • setUp() 测试前的初始化工作;tearDown()测试后的清除工作 (在每个测试方法运行时被调用)
  • 成功是输出 . 失败是 F

注意:
1、所有类中方法的入参为self,定义方法的变量也要“self.变量
2、定义测试用例,以“test”开头命名的方法,方法的入参为self
3、unittest.main()方法会搜索该模块下所有以test开头的测试用例方法,并自动执行它们
4、自己写的py文件不能,用 unittest.py 命名,不然会找不到TestCase

import unittest
class UserTestCase(unittest.TestCase):
    def setUp(self):
        print("setUP")
    def tearDown(self):
        print("tearDown")
    def test_name(self):
        print("test_name")
if __name__ == '__main__':
    unittest.main()

4.3 TestSuite

  • 利用unnitest执行流程测试而非单元测试
  • unittest.TestSuite() 类来表示一个测试用例集,用来确定测试用例的顺序,哪个先执行哪个后执行
    如果一个class中有四个test开头的方法,则加载到suite中时则有四个测试用例
    由TestLoder加载TestCase到TestSuite
    verbosity参数可以控制执行结果的输出,0 是简单报告、1 是一般报告、2 是详细报告
    默认1 会在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F”
  • TextTestRunner() 文本测试用例运行器
  • run()方法是运行测试套件的测试用例,入参为suite测试套件

实例:

import unittest
class UserTestCase(unittest.TestCase):
    def setUp(self):
        self.name="username"
        self.password="userpwd"
        print("setUP")
    def tearDown(self):
        print("tearDown")
        self.assertEqual('foo'.upper(),'FOO')
    def test_name(self):
        print("测试用户名")
        self.assertEqual(self.name,"username",msg="用户名不正确")
    def test_password(self):
        print("测试密码")
        self.assertEqual(self.password,"userpwd",msg="密码不正确")
if __name__ == '__main__':
    suite=unittest.TestSuite()
    suite.addTest(UserTestCase("test_name"))
    suite.addTest(UserTestCase("test_password"))
    runner=unittest.TextTestRunner(verbosity=0)
    runner.run(suite)

4.4 测试套件TestSuite生成测试报告
HTMLTestRunner
HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展,它可以生成 HTML的 测试报告,无法通过pip安装。

首先要下 HTMLTestRunner.py 文件,将下载的文件放入…\python\Lib目录下 (或者同个路径)

注意:python2和python3,语法不一样,导致HTMLTestRunner在python3不兼容
修改好的HTMLTestRunner.py 文件

实例:生成测试报告
生成测试报告代码

运行结果:

unittest pytest nosetest比对_测试用例


生成的报告:

unittest pytest nosetest比对_selenium_02


如果测试完全正确

运行结果:

unittest pytest nosetest比对_测试报告_03


生成的报告:

unittest pytest nosetest比对_python_04