目录结构
一、编写Web测试用例
二、测试报告生成
三、测试报告颜值优化
一、编写Web测试用例
案例:Baidu搜索关键词"百度",在搜索结果页面中,验证页面的Title内容,然后根据页面中定位到链接文字进行点击打开新页面
项目文件目录
--TestBaidu 文件夹
--TestCase 文件夹
--test_baidu.py
--runtest.py
test_baidu.py
from selenium import webdriver
from time import sleep
import unittest
# 创建TestBaidu类,继承unittest.TestCase;实现定位搜索,验证搜索,定位打开新页面
class TestBaidu(unittest.TestCase):
# 用例执行前准备工作
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(6)
self.driver.get("https://www.baidu.com")
# 在TestBaidu类下构造test_baidu()方法
def test_baidu(self):
driver = self.driver
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("百度")
driver.find_element_by_id("su").click() # 定位搜索
sleep(3)
# 设置断言,验证搜索结果当前页面对应的title内容
title = driver.title
self.assertEqual(title,"百度_百度搜索")
# 定位打开百度网盘新页面
driver.find_element_by_partial_link_text("百度网盘").click()
sleep(5)
# 用例执行后的处理操作
def tearDown(self):
self.driver.quit()
# 调试TestBaidu测试类
if __name__ == '__main__':
unittest.main()
执行结果:
通过模块调用进行用例执行
testrun.py
# 执行测试用例
import unittest
test_dir = "./TestCase"
discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(discover)
执行结果:
二、测试报告生成
自动化测试执行完成后,需要生成测试报告来查看测试结果,使用HTMLTestRunner模块可直接生成Html格式的报告。
下载传送门:(适用于Python2.x)
http://tungwaiyip.info/software/HTMLTestRunner.html
适用于Python3.x的模块需要修改以上下载的部分代码:
- 94行:引入的名称从
import StringIO
--->import io
- 539行:
self.outputBuffer = StringIO.StringIO()
--->self.outputBuffer = io.StringIO()
- 631行:
print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)
--->print (sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
- 642行;
if not rmap.has_key(cls):
--->if not cls in rmap:
- 766行:
uo = o.decode('latin-1')
--->uo = o
- 772行:
ue = e.decode('latin-1')
--->ue = e
存放路径:
将以上修改完成的HTMLTestRunner模块存放在Python3.x路径下Lib目录里面即可
项目的目录结构
- 在第一步编写Web测试用例的基础上,同一个项目文件Test_Baidu文件夹下新建一个TestReport文件夹,用来存放生成的测试报告
- 然后再新建一个
runtest_Report.py
文件用来作为执行测试用例、把测试结果写入并生成测试报告的脚本
runtest_Report.py
import unittest
from HTMLTestRunner import HTMLTestRunner
import time
# 定义测试用例的路径
test_dir = "./TestCase"
discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")
if __name__ == '__main__':
report_dir = "./TestReport" # 定义存放报告的路径
now = time.strftime("%y-%m-%d %H_%M_%S") # 对报告的时间命名格式化
report_name = report_dir+'/'+now+"result.html" # 报告文件的完整路径
# 打开文件,在报告文件写入测试结果
with open(report_name,'wb') as f:
runner = HTMLTestRunner(stream=f,title="Test Report"+"_Baidu",description="TestCase Result")
runner.run(discover) # 执行测试用例
f.close() # 保存后关闭文件
执行结果:
执行脚本后生成的测试报告 测试报告打开的样式三、测试报告颜值优化
下载传送门:https://github.com/easonhan007/HTMLTestRunner
PS:对于Python3.x环境,下载后的文件BSTestRunner.py
也需要作第二步测试报告生成中一样的修改,同样修改好的文件放置在Python安装路径的Lib目录下
新建runtest_Report_BS.py
import unittest
from BSTestRunner import BSTestRunner
import time
# 定义测试用例的路径
test_dir = "./TestCase"
discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")
if __name__ == '__main__':
report_dir = "./TestReport" # 定义存放报告的路径
now = time.strftime("%y-%m-%d %H_%M_%S") # 对报告的时间命名格式化
report_name = report_dir+'/'+now+"_result.html" # 报告文件的完整路径
# 打开文件,在报告文件写入测试结果
with open(report_name,'wb') as f:
runner = BSTestRunner(stream=f,title="Test Report"+"_Baidu",description="TestCase Result")
runner.run(discover) # 执行测试用例
f.close() # 保存后关闭文件
执行结果:
美颜后的测试报告
网友评论