0
点赞
收藏
分享

微信扫一扫

unittest 模块学习笔记(一)

unittest是什么?

·单元测试

·框架

先来看看严谨的定义

下面是我的简单理解

·unittest

·unittest怎么用?


在掌握unittest框架使用前,必须对类的继承和静态方法有一定的了解,由于我自己在学习的时候对python类的继承静态方法和装饰器不太熟悉,于是将其总结到自己的笔记中.


·类的继承

先看一个相对严谨的定义:

再看我个人对这个类继承的理解:

·静态方法

形式:

作用:

·实例及解释

//引入模块
import unittest

//待测功能函数
def add(a, b):
    return a+b


def divid(s, b):
    return s//b

class CodeTest(unittest.TestCase):
    //建立环境 在此处没有具体环境的搭建 只是简单提提setup函数
    def setUp(self):
        print("开始测试")
    //断言函数看结果是否符合预期输入 复杂的断言后面会提到
    def testAddFunction(self):
        self.assertAlmostEqual(2, add(1, 1))

    def testDivid(self):
        self.assertAlmostEqual(1, divid(2, 1))

    def tearDown(self)
        print("结束测试")


if __name__ == "__main__":
   unittest.main()

这是一个简单的实例

建立一个类 继承unittest.TestCase--->现在这个类具有testcase的全部属性和方法

 搭建一个开始环境 这个开始环境对应的就是测试用例的预置条件 如果用例是打开浏览器就执行测试 这里的代码应该用webdriver打开浏览器

testAddfunction 测试加法函数 此处注意名字必须得用test开头 后面会对其简单解释

teardown 清理环境 这个清理环境对应的就是测试用例结束的环境 如果开始环境是打开浏览器此处就该是退出浏览器 开始和结束环境需要看具体的用例预置条件 需不需重置开始条件

//对应第一个建立环境的函数 setUp
开始测试
结束测试
.开始测试//对应第二个建立环境的函数
结束测试
F

 结果展示:测试结果有三种形式 . F E 

        ". " 表示执行成功且为正确

        "F" 表示执行成功且为错误

        ”E“ 表示未成功执行,出现错误 

FAIL: testDivid (__main__.CodeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "c:\Users\lh\Desktop\学习\python_work\作业\study.py", line 29, in testDivid
    self.assertAlmostEqual(1, divid(2, 1))
AssertionError: 1 != 2 within 7 places (1 difference)

----------------------------------------------------------------------
Ran 2 tests in 0.003s

FAILED (failures=1)

报告展示:

FAIL:错误的地方

AseertionError:错误的原因

ran 用例数 in 时间

FALED 错误的结果

unittest简单原理解释

模块简单解释

unittest 模块中主要的几个部分是:testFixture testSuite testCase Runner

testFixture:提供环境的搭建和拆除(固定环境) 

testCase:测试用例,编写的代码

testSuite:将测试案例封装到suite交给Runner(固定案例)

Runner:运行以及结果展示(运行)

他们之间关系图如下:

 梳理的执行大概流程

 

两种运行方法

if __name__ == "__main__":
    unittest.main()
'''
直接搜索在当前名字的文件里 
继承testcase的类里 以test开头的方法 
找到后发送给loader打包到suite然后执行
'''
if __name__ == "__main__":
    suite = unittest.TestSuite()
    suite.addTest(CodeTest("testAddFunction"))
    runner = unittest.TextTestRunner()
    runner.run(suite)
//等价于第一种 与第一种不同的是可以自定义执行顺序和封装多个测试案例
举报

相关推荐

0 条评论