测试包含测试用例设计,测试执行,测试报告输出
测试用例设计一般是静态的,以文档的方式进行存储
测试执行,可以是手动的,也可以自动化用例执行
测试报告,可以是手动的,按照一定格式的测试报告,也可以是自动化生成的,其目的是看清哪些用例测试成功,哪些用例测试失败
这边以一个小的测试为例来说明,自动化测试如何从头到尾的进行
测试目录如图
test_project/
.............report/ 测试报告
.............test_case/ 测试用例
.............runtest.py 测试执行
首先设计两个用例,测试百度搜索页以及有道翻译页
test_baidu.py
#coding:utf-8
import sys #编码问题
reload(sys)
sys.setdefaultencoding('utf8')
from selenium import webdriver
import unittest
import time
class 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-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
from selenium import webdriver
import unittest
import time
class 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 unittest
import test_case.test_baidu
import test_case.test_youdao
from 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》
来源:oschina
链接:https://my.oschina.net/u/2303535/blog/726958