首页
学习
活动
专区
圈层
工具
发布
20 篇文章
1
船长带你看书——《selenium2 python 自动化测试实战》(1)
2
船长带你看书——《selenium2 python 自动化测试实战》(2)
3
《selenium2 python 自动化测试实战》(3)——操作测试对象
4
《selenium2 python 自动化测试实战》(4)——鼠标事件
5
《selenium2 python 自动化测试实战》(5)——键盘事件
6
《selenium2 python 自动化测试实战》(6)——打印信息和设置等待时间
7
《selenium2 python 自动化测试实战》(7)——定位一组对象
8
《selenium2 python 自动化测试实战》(8)——定位iframe
9
《selenium2 python 自动化测试实战》(9)——切换窗口
10
《selenium2 python 自动化测试实战》(10)——下拉框和alert
11
《selenium2 python 自动化测试实战》(11)——selenium安装版本
12
《selenium2 python 自动化测试实战》(12)——跳过验证码登录add_cookie
13
《selenium2 python 自动化测试实战》(13)——上传文件
14
《selenium2 python 自动化测试实战》(14)——下载文件
15
《selenium2 python 自动化测试实战》(16)——js操作补充
16
《selenium2 python 自动化测试实战》(17)——几个cookies操作
17
《selenium2 python 自动化测试实战》(18)——自动化测试模型(一)
18
《selenium2 python 自动化测试实战》(18)——webdriver错误截图
19
《selenium2 python 自动化测试实战》(19)——Selenium工具介绍
20
《selenium2 python 自动化测试实战》(20)——unittest单元测试框架解析

《selenium2 python 自动化测试实战》(20)——unittest单元测试框架解析

unittest是展开自动化测试的基础——这个框架很重要!

我们先自己写一个测试类:

1、被测试类 Widthget.py:

代码语言:javascript
代码运行次数:0
复制
# coding: utf-8

class Widthget:

    def __init__(self, size=(10, 10)):
        self._size = size

    def getSize(self):
        return self._size
    
    def reSize(self, width, height):
        if width < 0 or height < 0:
            raise ValueError, 'illegal size'
        self._size = (width, height)

2、测试类:

代码语言:javascript
代码运行次数:0
复制
# coding: utf-8

from Widthget import Widthget
import unittest


# 执行测试的类
class WidthgetTestCase(unittest.TestCase):

    def setUp(self):
        self.width = Widthget()

    def testSize(self):
        self.assertEqual(self.width.getSize(), (10, 10))
    
    def testResize(self):
        self.width.reSize(20, 20)
        self.assertEqual(self.width.getSize(), (20, 20))
    
    def tearDown(self):
        self.width = None

# 构造测试集
def suite():
    tc = unittest.TestSuite()
    tc.addTest(Widthget("testSize"))
    tc.addTest(Widthget("testResize"))
    return tc
    
if __name__ == '__main__':
    # unittest.main()
    runner = unittest.TextTestRunner()
    runner.run(suite())

运行测试文件可以看到:

  • 优化1:

我们没必要单独写构造测试集的方法,也就是说我们可以直接将suite()方法放到if __name__=='__main__':里面:

代码语言:javascript
代码运行次数:0
复制
if __name__ == '__main__':

    tc = unittest.TestSuite()
    tc.addTest(Widthget("testSize"))
    tc.addTest(Widthget("testResize"))

    runner = unittest.TextTestRunner()
    runner.run()

执行测试文件,可以看到用例也是可以通过的。

  • 优化2

测试用例都以test开头命名,比如测试登录,用例就命名为testLogin,测试退出用例就命名为testLoginOut,上面我们写的例子之所以能这么顺利的就通过,主要原因就在于我的用例(testSize,testResize)都是以test开头的。这是unittest框架的默认规定。

接下来就是批量执行用例,这个我们在接口测试框架的时候介绍过,而且是专门介绍过,大家可以看一下

接口测试基础——第6篇unittest模块(一)

接口测试基础——第6篇unittest模块(二)

接口测试基础——第6篇unittest模块(三)

这些都是批量执行的方式。上面我们讲的这个只是个很low的例子,大家随便看一下就行了,接下来我会写一个具体的selenium框架,大家直接参考一下就可以。如果大家感兴趣,就需要回顾一下这些知识了:

接口测试基础——第一篇smtplib发送文字邮件

接口测试框架——第五篇-用例和运行

HTMLTestRunner显示用例打印内容

举报
领券