Python-unittest测试框架

一、unittest是一个Python的单元测试框架,可以帮我们完成接口自动化测试、UI自动化测试

一个使用unittest框架的自动化测试用例代码如下:

test_baidu.py
# coding=utf-8
'''
Created on 2017-6-14
@author: 灵枢
Project:百度测试用例
'''
from selenium import webdriver
import unittest, time

class BaiduTest(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30) #隐性等待时间为30秒
        self.base_url = "https://www.baidu.com"

    def test_baidu_search(self):
        u"""百度搜索"""
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_id("kw").clear()
        driver.find_element_by_id("kw").send_keys("unittest")
        driver.find_element_by_id("su").click()
        time.sleep(3)
        title=driver.title
        self.assertEqual(title, u"unittest_百度搜索")

    def test_baidu_set(self):
        u"""百度设置"""
        driver=self.driver
        driver.get(self.base_url+"/gaoji/preferences.html")
        m=driver.find_element_by_name("NR")
        time.sleep(1)
        m.find_element_by_xpath("//option[@value='50']").click()
        time.sleep(1)

    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    # unittest.main()
    # 构建测试集
    suite = unittest.TestSuite()
    suite.addTest(BaiduTest("test_baidu_search"))
    suite.addTest(BaiduTest("test_baidu_set"))
    #执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)

二、代码解释

 首先,通过import导入unittest测试框架。创建BaiduTest 类继承unittest.TestCase 类,从 TestCase 类继承是告诉 unittest 这是一个测试用例。

 setUp ()方法用于设置初始化的部分,如初始化变量、打开浏览器等,在测试用例执行前,这个方法中的函数将先被调用。

 tearDown()方法用例测试用例执行之后的善后工作,如清除数据、关闭文件、关闭浏览器等。

 unittest要求测试用例必须以“test”开头。如test_baidu_search、test_baidu_set。

 接下来,调用unittest.TestSuite()类的addTest()方法向测试套件中添加测试用例

 最后,通过unittest.TextTestRunner()类的run()方法运行测试套件中的测试用例

 如果想直接运行当前测试文件中的所有测试用例,则可以直接使用unittest提供的main()方法。只需在if name == “main“:下面写unittest.main()就行了。

三、批量执行测试用例

这里还有一个搜狗搜索的测试用例,如下:

test_sogou.py
# coding=utf-8
'''
Created on 2017-6-14
@author: 灵枢
Project:搜狗搜索测试用例
'''
from selenium import webdriver
import unittest, time

class SogouTest(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30) #隐性等待时间为30秒
        self.base_url = "http://www.sogou.com"

    def test_sogou(self):
        u"""搜狗搜索"""
        driver = self.driver
        driver.get(self.base_url + "/")
        driver.find_element_by_id("query").clear()
        driver.find_element_by_id("query").send_keys(u"python3")
        driver.find_element_by_id("query").submit()
        time.sleep(3)
        title = driver.title
        self.assertEqual(title, u"python2 - 搜狗搜索")

    def tearDown(self):
        self.driver.quit()

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

如果想同时执行test_baidu.py和test_sogou.py,可以新建一个类用于批量执行测试用例:

all_search_tests.py
#coding=utf-8
'''
Created on 2017-6-14
@author: 灵枢
Project:批量执行测试用例
'''
import HTMLTestRunner
import unittest
import os,time


test_case_dir = "E:\\selenium_use_case\\test_case"  #test_baidu.py和test_sogou.py都放在该目录下
def get_test_suite():
    testsunit=unittest.TestSuite()
    #在listaa目录下查找以test开头的python文件
    discover=unittest.defaultTestLoader.discover(test_case_dir,pattern='test_*.py',top_level_dir=None)
    #循环添加测试用例
    for test_suite in discover:
        for test_case in test_suite:
            testsunit.addTests(test_case)
            print(testsunit)
    return testsunit

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(get_test_suite())
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值