selenium-Python之unittest(一)

这篇博客介绍了如何使用unittest框架在selenium中执行多个Python测试用例。内容包括测试用例的结构(setUp、testCase、tearDown),unittest.main()的使用,以及如何构造测试集合并调用TextTestRunner()执行测试。此外,还推荐了一篇深入讲解unittest的博客链接,并分享了作者的一张个人照片。
摘要由CSDN通过智能技术生成

最近一段时间在写测试框架–关键字和数据驱动的,后续完善一下会持续更新到博客里面。
本篇博客是在写框架的时候思考到的一个问题,如果不同文件中的成百上千个用例都需要执行呢,难道要一个一个py文件点击去运行吗?当然不能够,selenium还是很贴心的,这一点早就为大家想到了!通过unittest就可也以完美实现这个功能,那么我和大家分享一下我的学习心得。

  • 下面分享的内容是关于WEB的自动化测试。
    用例部分:
    通常包括三部分:
    测试前准备setUp、测试用例testCase、测试后环境还原tearDown
    例子:
    test01.py
#encoding=utf-8
"""百度搜索"""
import unittest
from time import sleep
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By

class BaiDuTest(unittest.TestCase):
    def setUp(self):
        self.driver=webdriver.Chrome(executable_path='c:\\Python27\\chromedriver')
        self.wait=WebDriverWait(self.driver,10)
        print 'BaiDuTest Start'

    def test_baidu(self):
        self.driver.get("https://www.baidu.com/")
        sleep(1)
        self.wait.until(lambda x: x.find_element("id", "kw")).send_keys('hello')
        sleep(0.5)

        self.wait.until(lambda x:x.find_element("id","su")).click()
        sleep(1)

    def tearDown(self):
        self.driver.quit()
        print "BaiDuTest Over"


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

test02.py

#encoding=utf-8
"""搜狗搜索"""
import unittest
from time import sleep
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait

class SouGouTest(unittest.TestCase):
    def setUp(self):
        self.driver=webdriver.Chrome(executable_path='c:\\Python27\\chromedriver')
        self.wait=WebDriverWait(self.driver,10)
        print 'SouGouTest Start'

    def test_sougou(self):
        self.driver.get('https://www.sogou.com/')
        sleep(1)
        self.wait.until(lambda x:x.find_element("id","query")).send_keys('hello')
        sleep(0.5)
        self.wait.until(lambda x:x.find_element("id","stb")).click()
        sleep(2)

    def tearDown(self):
        self.driver.quit()
        print "SouGouTest Over"

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

这里面,每个.py里面都有一条测试用例:
test_sougou和test_baidu。
如何进行单元测试呢?——unittest.main()
该方法可以搜索到该模块下的所有以test开头的测试用例,并执行他们,但是执行顺序是根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。所以以A开头的测试用例方法会优先执行,以a开头会后执行。
还有一种执行方式,就是构造测试集合,往测试集合里面添加测试用例,然后实例化TextTestRunner()类,用实例调用run方法,传递构造好的测试用例集合,这样就可以一次性按照顺序执行所有的想要执行的测试用例;
脚本如下:
test_for_run.py

#encoding=utf-8

from test import test01
from test import test02
import unittest
#构造测试集合
suite=unittest.TestSuite()
#方法一
#测试用例,哪个写在列表前面,就被先执行,可以一条一条添加用例,也可以用列表的形式传递到测试集合里面。
#【注意】一条一条添加是suite.addTest,用例列表添加是suite.addTests;
test_cases=[test01.BaiDuTest('test_baidu'),test02.SouGouTest('test_sougou')]
suite.addTests(test_cases)
#方法二:
suite.addTest(test02.SouGouTest('test_sougou'))
suite.addTest(test01.BaiDuTest('test_baidu'))


if __name__=="__main__":
    #实例化TextTestRunner()类
    runner=unittest.TextTestRunner()
    #使用类TextTestRunner中的run方法运行测试套件(所要执行的所有测试用例)
    runner.run(suite)

上面例子的测试目录如下:
这里写图片描述
test01.py

test02.py
run.py
这里面推荐一篇博客,http://www.cnblogs.com/yufeihlf/p/5707929.html
我查资料的时候看到的,里面对unittest的各个模块的属性的介绍还蛮多的,有需要的可以了解下,好东西,要分享!!!
我打算每篇博客以后带一张图,为博客增添的色彩,不要那么枯燥,本篇博客上一张我去青海和我家狗子的图片,不多说,上图!
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值