selenium之unittest的简单用法(一)

一、unittest简介

熟悉 java 的应该都清楚常见的单元测试框架 Junit 和 TestNG,这个招聘的需求上也是经常见到的。python 里面也有单元测试框架-unittest,相当于是一个python 版的 junit。

python 里面的单元测试框架除了 unittest,还有一个 pytest 框架,这个用的比较少,后面有空再继续分享。

用法:

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

这里写图片描述

二、简单用法

我们来看一下unittest帮助下的一个简单例子,将这段举例代码复制并运行一下,看看结果

import unittest

class IntegerArithmeticTestCase(unittest.TestCase):
    def testAdd(self):  ## test method names begin 'test*'
        self.assertEqual((1 + 2), 3)
        self.assertEqual(0 + 1, 1)
    def testMultiply(self):
        self.assertEqual((0 * 10), 0)
        self.assertEqual((5 * 8), 40)

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

这里写图片描述

分析:

1).第一行是导入 unittest 这个模块
2).class 这一行是定义一个测试的类,并继承 unittest.TestCase 这个类
3).接下来是定义了两个测试 case 名称:testAdd 和 testMultiply
4).注释里面有句话很重要,这个要敲下黑板记笔记了: ## test method names begi n ‘test*’
– 翻译:测试用例的名称要以 test 开头
5).然后是断言 assert,这里的断言方法是 assertEqual-判断两个是否相等,
这个断言可以是一个也可以是多个
7 ).if 下面的这个 unittest.main()是运行主函数,运行后会看到测试结果(跑
了两个用例耗时 0.000 秒,两个用例都通过):

Ran 2 tests in 0.000s
OK

三、简单实践

1 )上面的两个案例是加法和乘法,我们可以写个 case 试下减法和除法。
2).有很多小伙伴不知道断言怎么写,断言其实就是拿实际结果和期望结果去对比,对比的方法很多,这里只是举的最简单的一个判断相等的方法。

#-*- coding:utf-8 -*-
import unittest

class IntegerArithmeticTestCase(unittest.TestCase):
    def testcheng(self):
        u'''乘法'''
        test1 = 8*5 #实际结果
        hope1 = 40  #期望结果
        self.assertEqual(test1,hope1)
    def testchu(self):
        u'''除法'''
        test2 = 78/9 #实际结果
        hope2 = 3.5  #期望结果
        self.assertEqual(test2,hope2)
if __name__ == '__main__':
    unittest.main()

3)最后运行结果,第二个是失败的,失败原因:AssertionError: 8 != 3.5

C:\Python27\python.exe F:/pycharm-workspace/Django_Test/test2.py
.F
======================================================================
FAIL: testchu (__main__.IntegerArithmeticTestCase)
除法
----------------------------------------------------------------------
Traceback (most recent call last):
  File "F:/pycharm-workspace/Django_Test/test2.py", line 18, in testchu
    self.assertEqual(test2,hope2)
AssertionError: 8 != 3.5

----------------------------------------------------------------------
Ran 2 tests in 0.000s

FAILED (failures=1)

Process finished with exit code 1

四、前置和后置

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

#-*- coding:utf-8 -*-
import unittest
class Test(unittest.TestCase):
    def setUp(self):
        pass
    def tearDown(self):
        pass
    def testMinus(self):
        result = 6-5
        hope = 1
        self.assertEqual(result,hope)
if __name__ == '__main__':
    unittest.main()

五、博客标题判断案例

1).打开博客首页为例,写一个简单的 case
2).判断 title 完全等于期望结果
参考代码

#-*- coding:utf-8 -*-
import unittest
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
import time

class blog(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get('http://blog.csdn.net/mtbaby')
    def test_blog(self):
        time.sleep(2)
        result = EC.title_is(u'MTbaby的博客 - CSDN博客')(self.driver)
        print  result
        self.assertTrue(result)
    def tearDown(self):
        self.driver.quit()
if __name__ == '__main__':
    unittest.main()

执行结果:

C:\Python27\python.exe F:/pycharm-workspace/Django_Test/test2.py
True
.
----------------------------------------------------------------------
Ran 1 test in 14.564s

OK

Process finished with exit code 0
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值