selenium2学习:单元测试框架(1)

1       单元测试框架

1.1     认识单元测试

Unittest提供了全局的main()方法,使用他可以方便地将一个单元测试模块变成可以直接运行的测试脚本。Main()方法使用testloader类来搜索所有包含在该模块中以“test”命名开头的测试方法,并自动执行它们。

If __name__ == “___main__”:直接使用

1.1.1      Test case

一个完整的测试流程,包括测试前准备环境的搭建(setUP)、实现测试过程中的代码(run)、以及测试后环境的还原(tearDown)。单元测试(unit test)的本质也在这里,一个测试用例就是一个完整的测试单元。

1.1.2      Test suite

把多个测试用例集合在一起执行,就产生了测试套件testsuite的概念,test suite用来组装单个测试用例,可以通过addtest加载testcase到testsuite中,从而返回一个testsuite实例。

1.1.3      Test runner

在unittest单元测试框架中,通过texttestrunner类提供的run()方法来执行test suite/test case。Test runner可以使用图形界面、文本界面,或返回一个特殊的值等方式来表示测试执行的结果。

1.1.4      Test fixture

对于一个测试环境的搭建和销毁,就是一个fixture, 通过覆盖testcase的setUP()和tearDown()方法来实现。有什么用呢,比如说在这个测试用例中需要访问数据库,那么可以通过setup()中通过建立数据库连接来进行初始化,在teardown()中清除数据库产生的数据,然后关闭连接等。

1.2     断言方法

# 0517005:AssertTest
import unittest

class test(unittest.TestCase):

     def setUp(self):
         print (‘‘)
         print (‘test:assert:start‘)
     def test_case1(self):
         self.assertEqual(10,8,msg=‘assertEqual:相等。结果:不相等‘)

     def test_case2(self):
         self.assertNotEqual(10,8,msg=‘assertNotEqual:不相等。结果:OK‘)

     def test_case3(self):
         self.assertIs(‘aa‘,‘bb‘,msg=‘assertIs:是。结果:不是‘)

     def test_case4(self):
         self.assertIsNot(‘aa‘,‘bb‘,msg=‘assertIsNot:不是。结果:OK‘)

     def test_case5(self):
         self.assertIn(‘aa‘,‘aabb‘,msg=‘assertIn:存在。结果:OK‘)

     def test_case6(self):
         self.assertNotIn(‘aa‘,‘aabb‘,msg=‘assertNotIn:不存在。结果:存在‘)

     def tearDown(self):
         print (‘test:assert:OVER‘)
         pass
if __name__ == ‘__main__‘:
    unittest.main()   

‘‘‘
assertIsNone:为空
assertIsNotNone:不为空
assertIsInstance(a,b):a为b的一个实例
assertIsNotInstance(a,b):a不为b的一个实例

‘‘‘

1.3    测试套件

调用的calculator.py

#0517006:calculator:add test
# 计算器类

class count:
    def __init__(self,a,b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        return self.a + self.b

1.3.1      含一个用例

测试集包含1个用例:suite.addTest()

#0517007:suite:just one

from calculator import count
import unittest

class testcount(unittest.TestCase):
    def setUp(self):
        print(‘Test Start‘)

    def test_add1(self):
        j = count(2,3)
        self.assertEqual(j.add(),5,msg= ‘错了1‘)

    def test_add2(self):
        j = count(3,3)
        self.assertEqual(j.add(),5,msg= ‘错了2‘)

    def test_add3(self):
        j = count(3,8)
        self.assertEqual(j.add(),11,msg= ‘错了3‘)

    def tearDown(self):
        print(‘Test Over‘)

if __name__ == ‘__main__‘:
    #构造测试集
    suite = unittest.TestSuite()
    #测试集包含1个用例:suite.addTest()
    suite.addTest(testcount(‘test_add3‘))
    suite.addTest(testcount(‘test_add2‘))

    #执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)

执行结果:

>>>
 RESTART: C:\Users\tians\AppData\Local\Programs\Python\Python36\example-JLL\modules\002-calculator\test-suite.py
Test Start
Test Over
.Test Start
Test Over
F
======================================================================
FAIL: test_add2 (__main__.testcount)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\tians\AppData\Local\Programs\Python\Python36\example-JLL\modules\002-calculator\test-suite.py", line 58, in test_add2
    self.assertEqual(j.add(),5,msg= ‘错了2‘)
AssertionError: 6 != 5 : 错了2

----------------------------------------------------------------------
Ran 2 tests in 0.064s

FAILED (failures=1)
>>> 

1.3.2      含多个用例

测试集包含多个用例suite.addTests()

#0517006:suite:many

from calculator import count
import unittest

class testcount(unittest.TestCase):
    def setUp(self):
        print(‘Test Start‘)

    def test_add1(self):
        j = count(2,3)
        self.assertEqual(j.add(),5,msg= ‘错了1‘)

    def test_add2(self):
        j = count(3,3)
        self.assertEqual(j.add(),5,msg= ‘错了2‘)

    def test_add3(self):
        j = count(3,8)
        self.assertEqual(j.add(),11,msg= ‘错了3‘)

    def tearDown(self):
        print(‘Test Over‘)

if __name__ == ‘__main__‘:
    #构造测试集
    suite = unittest.TestSuite()
     #测试集包含多个用例suite.addTests()
    tests = [testcount(‘test_add1‘), testcount(‘test_add2‘)]
    suite.addTests(tests)

    # 或直接写入:suite.addTests([testcount(‘test_add1‘), testcount(‘test_add2‘)])

    #执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)

执行结果:

>>>
 RESTART: C:\Users\tians\AppData\Local\Programs\Python\Python36\example-JLL\modules\002-calculator\test-suite.py
Test Start
Test Over
.Test Start
Test Over
F
======================================================================
FAIL: test_add2 (__main__.testcount)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\tians\AppData\Local\Programs\Python\Python36\example-JLL\modules\002-calculator\test-suite.py", line 16, in test_add2
    self.assertEqual(j.add(),5,msg= ‘错了2‘)
AssertionError: 6 != 5 : 错了2

----------------------------------------------------------------------
Ran 2 tests in 0.066s

FAILED (failures=1)
>>> 

原文地址:https://www.cnblogs.com/jxba/p/9053507.html

时间: 2024-11-02 05:05:39

selenium2学习:单元测试框架(1)的相关文章

Java反射学习总结终(使用反射和注解模拟JUnit单元测试框架)

本文是Java反射学习总结系列的最后一篇了,这里贴出之前文章的链接,有兴趣的可以打开看看. http://blog.csdn.net/a396901990/article/category/2302221 本文介绍了如何利用反射和注解去简单的模拟JUnit4单元测试框架,之所以选择JUnit4是因为4.0以后最大的改进就是使用了注解.需要注意的是这里并不是完全的模拟,只是简单实现了一下Runner类和JUnit注解相关的工作流程.所以本文的主要目的是介绍反射和注解的使用.废话不多说,直接进入正文

Python单元测试框架unittest之深入学习

前言 前几篇文章该要地介绍了python单元测试框架unittest的使用,本篇文章系统介绍unittest框架. 一.unittest核心工作原理 unittest中最核心的四个概念是:test case, test suite, test runner, test fixture. 下面我们分别来解释这四个概念的意思,先来看一张unittest的静态类图(下面的类图以及解释均来源于网络,原文链接): 一个TestCase的实例就是一个测试用例.什么是测试用例呢?就是一个完整的测试流程,包括测

Python单元测试框架之pytest -- 生成测试报告

继续pytest单元测试框架的学习,pytest可以生成多种类型的测试报告.这一节就来学习pytest如何生成测试报告. 创建test_calss.py 测试用例文件,这里以测试该文件为例. #coding=utf-8 class TestClass: def test_one(self): x = "this" assert "h" in x def test_two(self): x = "hello" assert x == "h

Python+Selenium ----unittest单元测试框架

unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做"PyUnit",是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java还有一个很好用的单元测试框架叫TestNG,本系列只学习Python,所以只需要unittest是Python里的一个单元测试框架就可以了.       unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是test,也就是一个测试用例.要了解

玩转Google开源C++单元测试框架Google Test系列(转载)

越来越多公司采用敏捷开发,单元和回归测试越来越重要,GTest作为最佳C++单元测试工具越来越多的被使用.转自 http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错. 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了. 其实gtest本身的

跟着刚哥学习Spring框架--创建HelloWorld项目(一)

1.Spring框架简介 Spring是一个开源框架,Spring是在2003年兴起的一个轻量级的开源框架,由Rod johnson创建.主要对JavaBean的生命周期进行管理的轻量级框架,Spring给JavaEE带来了春天. 2.Spring框架特点 √ 轻量级:不是说他的文件大小很小,指的Spring是非侵入性. 知识点:轻量级框架和重量级框架的区别 轻量级和重量级的框架是以启动程序所需要的资源所决定,比如EJB在启动程序的时候需要消耗大量的资源,内存和CPU,所以是重量级.√ 依赖注入

转:玩转Google开源C++单元测试框架Google Test系列

转自http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错. 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了. 其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代掉

玩转Google开源C++单元测试框架Google Test系列(gtest)(转)

转自:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错. 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了. 其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代

Python必会的单元测试框架 —— unittest

用Python搭建自动化测试框架,我们需要组织用例以及测试执行,这里博主推荐Python的标准库--unittest. unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那你用unittest来应该是很轻松的,它们的工作方式都差不多. unittest核心工作原理 unittest中最核心的四个概念是:test case, test suite, test runner, test fixture. 下面我们分别来解释这四个概念的意思,先来看一张unittest的静态