虽然我们通常使用Selenium来写测试脚本,但是Selenium本身不提供测试框架。在这里,我们可以结合Python自动化框架unittest库来进行web测试。当然你也可以使用其他测试框架或工具,如py.test和nose.

下面是结合百度搜索的一个测试函数:

#coding:utf-8

import time
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class  KeySearch(unittest.TestCase):
    def setUp(self):
        print("start to test")
        self.browser = webdriver.Chrome()

    def test_search_in_Baidu(self):
        browser = self.browser
        browser.get('http://www.baidu.com')
        self.assertIn("百度", browser.title)
        elem = browser.find_element_by_id("kw")
        elem.send_keys("test")
        elem.send_keys(Keys.RETURN)
        #self.assertIn("结果",browser.page_source)  # 有点问题, 待调试

    def test_search_in_Google(self):
        browser = self.browser
        browser.get('http://www.google.com')
        self.assertIn("Google", browser.title)
        elem = browser.find_element_by_id("lst-ib")
        elem.send_keys("test")
        elem.send_keys(Keys.RETURN)
        self.assertIn("results",browser.page_source)

    def tearDown(self):
        print("tearDown the test")
        time.sleep(5)
        self.browser.close()

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

In the above example, selenium 提供了webdriver的所有实现,Unittest组织整个测试框架。在这个实例中,所有的selenium操作在 [Selenium] 从一个实例开始,访问Baidu并进行关键字搜索 有所介绍,在这里,只介绍unittest的框架。

 

在这个测试脚本中,类KeySearch继承于unittest.TestCase,从而告知unitest模块,这是个测试类。

class  KeySearch(unittest.TestCase):

测试类的调用通过 unittest.main()

unittest.main()

 

类KeySearch中的函数,除了setUp和tearDown都是一个独立的测试用例。 通常测试用例函数以字符串test开头

def test_search_in_Baidu(self):
def test_search_in_Google(self):

 

每次执行一个测试用例都会调用setUp和Teardown 函数,如这个用例的测试打印结果如下

Start to test
Search in Baidu
TearDown the test
Start to test
.Search in Google
TearDown the test
.
----------------------------------------------------------------------
Ran 2 tests in 26.998s

OK

Process finished with exit code 0

 

Open Issue:

self.assertIn("结果",browser.page_source) # 有点问题, 待调试

会出问题,而google就没这个问题,是因为中文支持的原因吗?待调查,如果有朋友知道,如能告知,万分感谢

self.assertIn("\u7ed3\u679c",browser.page_source)
AssertionError: '\u7ed3\u679c' not found in ……..

posted on 2015-07-08 13:49  橘子季节  阅读(437)  评论(0编辑  收藏  举报