基于unittest测试框架编写的测试脚本,一般单个测试类下会有多个测试方法,unittest也提供多种测试执行方式,下面就不同方式或者需求一一实操并说明:
一、使用unittest下main()方法的运行所有测试方法,实例代码如下:
'''单个测试类的多种运行方式'''
# -*- coding:utf-8 -*-
import unittest
from selenium import webdriver
from time import sleep
import HTMLTestRunner class BaiduSearch(unittest.TestCase):
@classmethod
def setUpClass(cls):
#create a new browser session
cls.driver = webdriver.Chrome()
cls.driver.implicitly_wait(30)
cls.driver.maximize_window() cls.driver.get("https://www.baidu.com") def test_search_selenium(self):
#get the search textbox and enter search keyword
search_textbox = self.driver.find_element_by_id('kw')
search_textbox.clear()
search_textbox.send_keys("selenium")
#get the and seacrh button and click
seacrh_button = self.driver.find_element_by_id('su')
seacrh_button.click() #add assert
sleep(2)
tag = self.driver.find_element_by_link_text("Selenium Remote Control").text
self.assertIn("Selenium",tag) def test_search_python(self):
search_textbox = self.driver.find_element_by_id('kw')
search_textbox.clear()
search_textbox.send_keys("python")
seacrh_button = self.driver.find_element_by_id('su')
seacrh_button.click() sleep(3)
tag = self.driver.find_element_by_link_text("PyPI").text
self.assertEqual("PyPI",tag) @classmethod
def tearDownClass(cls):
#close the browser window
cls.driver.quit() #使用unittest下main()方法的运行所有测试方法
if __name__ == '__main__':
unittest.main(verbosity=2) #传递verbosity参数查看更详细的测试结果展示
运行结果如下 :
二、使用TestLoader和TextTestRunner来创建和运行测试套件,代码如下:
...
suite = unittest.TestLoader().loadTestsFromTestCase(BaiduSearch)
unittest.TextTestRunner(verbosity=2).run(suite)
运行结果同上。
三、使用TestSuite和TextTestRunner来创建和运行测试套件,代码如下:
...
suite = unittest.TestSuite()
suite.addTest(BaiduSearch("test_search_python")) #使用addTest()添加测试类下面的单个测试方法
suite.addTest(BaiduSearch("test_search_selenium"))
unittest.TextTestRunner(verbosity=2).run(suite)
运行结果同上。
注意这个方法可以灵活只运行测试类下的任何一个或者几个测试方法,只需要addTest相应测试方法即可,或者在添加完所有方法后注释掉其中不打算测试的方法也可以。
四、使用HTMLTestRunner和TestLoader来创建和运行测试套件并生成漂亮的HTML格式的测试报告,代码如下:
...
suite = unittest.TestLoader().loadTestsFromTestCase(BaiduSearch)
#open the report file
report_file = open('./' + ' BaiduSearch_test.html', 'wb')
#configure HTMLTestRunner options and run the suite
HTMLTestRunner.HTMLTestRunner(stream = report_file,
title = "baidu",
description = "Baidu Test",
verbosity=2).run(suite)
运行结果同上且生成一个HTML格式的测试报告在当前目录下。