测试包含测试用例设计,测试执行,测试报告输出
测试用例设计一般是静态的,以文档的方式进行存储
测试执行,可以是手动的,也可以自动化用例执行
测试报告,可以是手动的,按照一定格式的测试报告,也可以是自动化生成的,其目的是看清哪些用例测试成功,哪些用例测试失败
这边以一个小的测试为例来说明,自动化测试如何从头到尾的进行
测试目录如图
test_project/.............report/ 测试报告.............test_case/ 测试用例.............runtest.py 测试执行
首先设计两个用例,测试百度搜索页以及有道翻译页
test_baidu.py
#coding:utf-8import sys #编码问题reload(sys)sys.setdefaultencoding('utf8')from selenium import webdriverimport unittestimport timeclass MyTest(unittest.TestCase): #测试用unittest测试工具 def setUp(self): self.driver = webdriver.Firefox() self.driver.maximize_window() self.driver.implicitly_wait(10) self.base_url = "http://www.baidu.com" def test_baidu(self): 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(2) title = driver.title self.assertEqual(title, "unittest_百度搜索") #检查点是跳转页面标题 def tearDown(self): self.driver.close() if __name__ == '__main__': #该文件以模块方式存在,如果直接执行该文件,则文件名为'__main__',执行main函数 unittest.main()
test_youdao.py
#coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')from selenium import webdriverimport unittestimport timeclass MyTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.maximize_window() self.driver.implicitly_wait(10) self.base_url = "http://www.youdao.com" def test_youdao(self): driver = self.driver driver.get(self.base_url+"/") driver.find_element_by_id("translateContent").clear() driver.find_element_by_id("translateContent").send_keys("webdriver") driver.find_element_by_id("translateContent").submit() time.sleep(2) title = driver.title print title self.assertEqual(title, "【webdriver】什么意思_英语webdriver的翻译_音标_读音_用法_例句_在线翻译_有道词典") #检查点是跳转的页面标题 def tearDown(self): self.driver.close() if __name__ == '__main__': unittest.main()
run_test.py
import unittestimport test_case.test_baiduimport test_case.test_youdaofrom HTMLTestRunner import HTMLTestRunner #首先下载一个HTMLTestRunner.py放到sys.path中,可以进行导入用HTMLTestRunner产生一个HTML的测试报告import time#suite = unittest.TestSuite()##suite.addTest(test_baidu.MyTest('test_baidu'))#suite.addTest(test_youdao.MyTest('test_youdao'))test_dir = './test_case' #测试用例存放路径以当前目录进行寻找#当用例很多,并且放在很多文件中,此时如果还是用suite一个一个加用例到suite中再执行就会显得很麻烦,#discover也是一个自动化过程,在一个路径下,自动匹配test*.py的文件作为测试用例discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')if __name__ == '__main__': # runner = unittest.TextTestRunner() # runner.run(suite) now = time.strftime("%Y-%m-%d %H_%M_%S") #产生当前时间,以’年-月-日 小时_分钟_秒‘的格式 filename = './report/' + now + 'result.html' #产生文件名包括路径,这样每次产生的文件不重名 fp = open(filename, 'wb') #以写的方式打开文件 runner = HTMLTestRunner(stream=fp, #HTMLTestRunner生成实例 title='百度搜索测试报告', description='用例执行情况:') runner.run(discover) #跑discover中的所有用例
参考:
《Selenium2自动化测试实战》
《selenium python buildings release 2》