zoukankan      html  css  js  c++  java
  • unittest简介

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

    1 unittest 简介

    1).先导入 unittest
    2).用 help 函数查看源码解析
    3).查看描述:
    Python unit testing framework, based on Erich Gamma's JUnit and KentBeck's Smalltalk testing framework.
    翻译:python 的单元测试框架,是基于 java 的 junit 测试框架

    2 unittest使用

    1).第一行是导入 unittest 这个模块
    2).class 这一行是定义一个测试的类,并继承 unittest.TestCase 这个类
    3).接下来是定义了四个测试 case 名称:testAdd 、 testMul、testMinus、testDiv
    4).注释里面有句话很重要,这个要敲下黑板记笔记了: ## test method namesb b egin 'test*' -- 翻译:测试用例的名称要以 t test 开头
    5).然后是断言 assert,这里的断言方法是 assertEqual-判断两个是否相等,这个断言可以是一个也可以是多个
    6).if 下面的这个 unittest.main()是运行主函数,运行后会看到测试结果:

    参考源码:

    # coding:utf-8
    import unittest
    class IntegerArithmeticTestCase(unittest.TestCase):
        
        # test method namesb b egin 'test*'
        def testAdd(self):
            self.assertEquals((1+2), 3)
            self.assertEquals((0+1), 1)
    
        def testMul(self):
            self.assertEquals((0*5), 0)
            self.assertEquals((10*5), 50)
    
        def testMinus(self):
            result = 6-5
            hope = 1
            self.assertEquals(result, hope)
    
        def testDiv(self):
            result = 7/2
            hope = 3
            self.assertEquals(result, hope)
    
    if __name__ == '__main__':
        unittest.main()
    

    * 注意:

    当断言没有通过时,就会报错,例如将上面最后一个用例的期望结果改为hope=3.5,执行结果就会报错

    最后运行结果,第四个是失败的,失败原因:AssertionError: 3 != 3.5
    F.
    =====================================================================
    =
    FAIL: testDivide (__main__.Test)
    这里是测试除法
    ---------------------------------------------------------------------
    -
    Traceback (most recent call last):
    File "D:/test/web-project/p.py", line 14, in testDivide
    self.assertEqual(result, hope)
    AssertionError: 3 != 3.5
    ---------------------------------------------------------------------
    -
    Ran 4 tests in 0.004s
    FAILED (failures=1)

    3 前置和后置

    1).setUp:在写测试用例的时候,每次操作其实都是基于打开浏览器输入对应网址这些操作,这个就是执行用例的前置条件。
    2).tearDown:执行完用例后,为了不影响下一次用例的执行,一般有个数据还原的过程,这就是执行用例的后置条件。
    3).很多人执行完用例,都不去做数据还原,以致于下一个用例执行失败习惯不好。
    4).前置和后置都是非必要的条件,如果没有也可以写 pass

    完整案例:

    # coding:utf-8
    from selenium import webdriver
    from selenium.webdriver.support import  expected_conditions as EC
    import time
    import  unittest
    class Blog(unittest.TestCase):
        # 前置操作
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.get("http://www.cnblogs.com/101718qiong/")
            self.driver.maximize_window()
        # 测试用例
        def test_blog(self):
            time.sleep(3)
            result = EC.title_is(u'Silence&QH - 博客园')(self.driver)
            print result
            self.assertTrue(result)
        # 后置操作
        def tearDown(self):
            self.driver.quit()
    
    if __name__ == "__main__":
        unittest.main()
    
  • 相关阅读:
    DeepIn系统使用和相关软件安装
    在JDK11中生成JRE11的方法
    IIS 7 中设置文件上传大小的方法
    在服务器上发布MVC5的应用
    安装了多个Oracle11g的客户端,哪个客户端的tnsnames.ora会起作用?
    配置putty或SecureCRT防止SSH连接中断
    借助FRP反向代理实现内网穿透
    你不知道的hostname命令
    Perl脚本通过Expect登陆多台设备批量执行命令并Log
    Linux内核参数配置
  • 原文地址:https://www.cnblogs.com/101718qiong/p/7992810.html
Copyright © 2011-2022 走看看