Python-unittest测试框架
2017-06-28 17:57
615 查看
一、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())
相关文章推荐
- python测试框架——unittest和nosetest
- Python利用unittest框架编写接口测试小栗子
- Python单元测试框架unittest测试过程简介
- Python Unittest 自动化单元测试框架Demo
- python的unittest框架中如何删除测试数据,清理环境,可以通过addCleanup函数
- python测试框架——unittest和nosetest
- Macaca+HTMLTestRunner测试报告模式修改,基于python unittest 测试框架扩展
- Python接口测试之unittest框架(五)
- Python接口测试之unittest框架(五)
- python实现接口测试到unittest框架集成
- Python中unittest测试框架简介
- Python UnitTest 框架执行功能自动化测试
- Python Unittest 自动化单元测试框架Demo
- Python中unittest框架写测试用例
- python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)
- Python之使用unittest框架和HTMLTestRunner.py文件实现多个测试用例执行与测试报告生成
- python unittest测试框架介绍
- Python unittest 测试框架学习笔记
- Python Unittest自动化单元测试框架详解
- python unittest测试框架介绍