zoukankan      html  css  js  c++  java
  • unittest框架及原理

    一、unittest框架及原理介绍

    1、unittest最核心的四个概念

     2、UnittestTestCase类的用法

    测试用例类:自己定义的类只要继承于unittest中的TestCase那么这个类就是一个测试用例类

    测试用例:测试用例类中,以test开头的方法就是一条测试用例

    用例执行通没通过的评判标准:断言异常

    import unittest

    from Login import login_check

    class LoginTestCases(unittest.TestCase):
        def test_login_pass(self):
            #第一步:准备测试用例数据
            #1、用例的参数:可用元组,列表和字典
            data=("python24","lemonban")
            #2、预期结果
            expected={"code":0,"msg":"登录成功"}
            #第二步:执行功能函数,获取实际结果
            result=login_check(*data)
            #第三步:比对实际结果和预期结果
            # assert expected==result
            self.assertEqual(result,expected)

    # 如果直接运行这个文件,就使用unittest中的main函数来执行测试用例
    if __name__ == '__main__':
        unittest.main()

    3、UnittestTestSuit类的用法

    import unittest

    #第一步:创建一个测试套件
    suit=unittest.TestSuite()

    #第二步:将测试用例加载到测试套件中
    #第1种,通过模块加载用例,把模块名作为参数,将该模块中所有测试用例全部加载到套件中
    #创建一个加载对象
    import Testcases
    load=unittest.TestLoader()
    suit.addTest(load.loadTestsFromModule(Testcases))

    #第2种:通过测试用例类去加载,把模块中的测试类作为参数,将该测试用例类中所有测试用例加载到套件中
    import Testcases
    load=unittest.TestLoader()
    suit.addTest(load.loadTestsFromTestCase(Testcases.LoginTestCases))

    #第3种,添加单条测试用例,先导入测试用例类,再创建一个测试类对象,把测试用例方法名作为参数(unittest.TestCase有参数为字符串类型)
    from Testcases import LoginTestCases
    # 创建一个用例对象
    # 注意点:通过用例类去创建测试用例对象的时候,需要传入用例的方法名(字符串类型)
    case=LoginTestCases("test_login_pass")
    suit.addTest(case)

    # 第4种,指定测试用例的所在的目录路径,把路径作为参数,将该路径下的所有用例加载到套件中
    loader = unittest.TestLoader()
    suite.addTest(loader.discover(r"用例文件所在的目录的绝对路径"))

    #第三步:创建一个测试运行程序启动器

    #第1种:使用unittest自带的启动器
    runner=unittest.TextTestRunner()

    #第四步:使用启动器去执行套件,把套件作为参数
    runner.run(suite)

    4、使用TestRunerNew模块生成html测试报告

    from HTMLTestRunnerNew import HTMLTestRunner

    #第三步:创建一个测试运行程序启动器

    #第2种:使用HTMLTestRunner传入参数生产启动器
    #参数1:打开测试报告文件,必须是html后缀的文件,模式"wb",以二进制模式覆盖写入,将句柄传给stream
    #参数2:verbosity=2为默认参数,可以不用填写
    #参数3:tester,报告中显示的测试人员
    #参数4:description,报告的描述信息
    #参数5:title,报告的标题
    runner=HTMLTestRunner(stream=open("report.html","wb"),tester="xiaosongshu",description="描述信息",title="登录功能测试报告")

    5、Unittestfixture的使用

    是写在测试用例类里面的,用于测试环境搭建或销毁

    # 每条用例执行之前都会执行,用例的前置条件,以print输出的在测试报告中会显示出来
    def setUp(self):
        print("用例{}开始执行--".format(self))

    # 每条用例执行之后都会执行,用例的后置处理,以print输出的在测试报告中会显示出来
    def tearDown(self):
        print("用例{}执行结束--".format(self))

    # 当成测试用例类中的用例执行之前,会执行该方法,print输出的不在报告中显示,在控制台显示
    @classmethod
    def setUpClass(cls):
        print("-----setup---classs-----")

    # 当成测试用例类中的用例执行完毕,会执行该方法,print输出的不在报告中显示,在控制台显示
    @classmethod
    def tearDownClass(cls):
        print("-----teardown---classs-----")

  • 相关阅读:
    leetcode_1423. 可获得的最大点数
    leetcode_剑指 Offer 06. 从尾到头打印链表
    leetcode_剑指 Offer 05. 替换空格
    leetcode_49. 字母异位词分组
    leetcode_73. 矩阵置零
    leetcode_26. 删除排序数组中的重复项
    jstack查看JVM堆栈信息
    如何画一张架构图
    百年孤独家谱
    阿尔萨斯(Arthas)入门
  • 原文地址:https://www.cnblogs.com/python-squirrel/p/12144246.html
Copyright © 2011-2022 走看看