unittest测试框架

unittest测试框架,第1张

'''
    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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/917016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存