unittest实现批量处理测试集
批量执行测试集
#coding=utf-8 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException import unittest, time, re class Baidu(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "http://www.baidu.com/" self.verificationErrors = [] self.accept_next_alert = True #百度搜索用例 def test_baidu_search(self): driver = self.driver driver.get(self.base_url + "/") driver.find_element_by_id("kw").send_keys("selenium webdriver") driver.find_element_by_id("su").click() time.sleep(2) driver.close() #百度设置用例 def test_baidu_set(self): driver = self.driver #进入搜索设置页 driver.get(self.base_url + "/gaoji/preferences.html") #设置每页搜索结果为 100 条 m=driver.find_element_by_name("NR") m.find_element_by_xpath("//option[@value='100']").click() time.sleep(2) #保存设置的信息 driver.find_element_by_xpath("//input[@value='保存设置']").click() time.sleep(2) driver.switch_to_alert().accept() def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main()
虽然已经实例了多个用例一起跑,但这样仍然不合理,几个用例一起执行还好,如果几十个、几百个的用例的话,这个文件将变得无比庞大,不利于维护。
所以,做合理的做法是一个例一个文件,把所文件放一个文件夹下,通过单独的脚本控制所有用例的执行,将脚本的执行结果输出到一个 log 文件中。
初步把框架走通了。
单个用例他们整理一下放到一个文件夹下,然后编写执行用例集
的脚本:
test_case_.py #-*-coding=utf-8 -*- import os #列出某个文件夹下的所有 case,这里用的是 python,所在 py 文件运行一次后会生成一个 pyc 的副本 caselist=os.listdir('D:\\selenium_use_case\\test_case') for a in caselist: s=a.split('.')[1:][0] #选取所要执行的用例 if s=='py': #此处执行 dos 命令并将结果保存到 log.txt os.system('D:\\selenium_use_case\\test_case\\%s 1>>log.txt 2>&1'%a)
查看 log.txt 文件:
..
----------------------------------------------------------------------
Ran 2 tests in 32.469s
OK
..
----------------------------------------------------------------------
Ran 2 tests in 27.016s
OK