栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

unittest测试框架

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unittest测试框架

'''
    web 自动化:python + selenium + unittest
    selenium: 自动化测试工具
    unittest: 单元测试框架  - -》  提供用例的组织和执行 /  提供丰富的断言方法
                                    /  提供丰富的日志和报告

    步骤:  1. 导包, unittest 是自带的框架
            2. 创建一个单元测试的类 lass unitMyMath(unittest.TestCase),继承 unittest.TestCase
            3. 单元测试中五个特殊方法的使用
                setUp(): 实例方法,进行测试用例的初始化,测试用例的前提条件写在这,
                test_XXX(): 测试用例,把测试用例的步骤写在这里
                tearDown(): 进行测试用例资源释放
                @classmethod: 注解的方法是类方法,不用创建对象也能用,在对象进内存之前就已经存在的方法
                setUpClass(cls): 类方法,给当前单元测试类的所有用例进行初始化
                tearDownClass(): 给单元测试类中所有用例进行资源释放
            4.  unittest.main() 执行测试时,不能解决执行顺序的问题(按照测试用例(方法名)的字母顺序执行的),
                                也不能解决执行个数的问题(所有的执行了)
            5. 可以解决 4 中的问题
'''
import unittest
import  myMath

# 创建一个单元测试类
class unitMyMath(unittest.TestCase):

    # 一种注解,注解的方法是类方法,不用创建对象也能用,在对象进内存之前就已经存在的方法
    @classmethod
    def setUpClass(cls):
        print("我是 setUpClass 方法")

    @classmethod
    def tearDownClass(cls):
        print("我是 tearDownClass 方法")

    # 方法名不能改,类中不同函数顺序变了,但是执行顺序不变;
    def setUp(self):
        print("我是 setUp 方法")
        self.mm = myMath.myMath()

    # 必须是test 开头的方法,这一个就是测试用例
    # 测试用例书写顺序不影响执行顺序,执行顺序控制不了, 按照测试用例(方法名)的字母顺序执行的
    def test_add1(self):
        print("我是 实例一 方法")
        actualValue = self.mm.jia(11, 11)
        expextValue = 22
        self.assertEqual(actualValue, expextValue, "预期结果与实际不符")

        def test_add2(self):
            print("我是 实例一 方法")
            actualValue = self.mm.jia(10, 11)
            expextValue = 22
            self.assertEqual(actualValue, expextValue, "预期结果与实际不符")

    # 必须是test 开头的方法,这一个就是测试用例
    def test_cheng2(self):
        print("我是 实例二 方法")
        actualValue = self.mm.cheng(12, 2)
        expectValue = 24

        self.assertEqual(actualValue, expectValue, "预期结果与实际不符")


    def tearDown(self):
        print("我是 tearDown 方法")
        # 每次释放初始化
        self.mm = None


if __name__=="__main__":
    # 第一种方式: 这个方法执行的使我们单元测试类中所有的测试用例, 当我们只想测试某几个测试用例时就不可以
    # unittest.main()

    # 第二种方式(要求掌握)
    suitt = unittest.TestSuite()
    # 格式:类名(用例名)
    suitt.addTest(unitMyMath("test_add1"))
    suitt.addTest(unitMyMath("test_add2"))
    suitt.addTest(unitMyMath("test_cheng1"))

    # 第三种方式
    suitt.addTests(map(unitMyMath, ["test_add1", "test_add2", "test_cheng1"]))

    # 测试结果
    re = unittest.TestResult
    suitt.run(re)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/875758.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号