随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。
#------------------------------------------------我是可耻的分割线-------------------------------------------
测试报告文件名
在每次运行测试之前,都要手动修改报告的名称,如果忘记修改,就会把之前的报告覆盖,这样做显然很麻烦,那么有没有办法使每次生成的报告名称都不重复并且有意义?最好的方法是在报告中假如当前时间,这样生成的报告既不会重叠,又能更清晰地知道报告的生成时间。
Python的time模块中提供了丰富的关于时间操作的方法,可以利用这些方法来完成这个需求。
time.time():获取当前时间戳。
time.ctime():当前时间的字符串形式。
time.localtime():当前时间的struct_time形式。
time.strftime():用来获得当前时间,可以将时间格式化为字符串。
python中时间日期格式符号(区分大小写)如下表:
序号 | 指令 | 含义 |
%a | 星期几的简写 | |
%A | 星期几的全程 | |
%w | 十进制表示的星期几(值从0到6,星期天为0) | |
%d | 十进制表示的每月的第几天 | |
%b | 月份的简写 | |
%B | 月份的全称 | |
%m | 十进制表示的月份 | |
%y | 不带世纪部分的十进制年份(值从0到99) | |
%Y | 带世纪部分的十进制年份 | |
%H | 24小时制的小时 | |
%l | 12小时制的小时 | |
%p | 本地的AM或PM的等价显示 | |
%M | 十时制表示的分钟数 | |
%S | 十进制的秒数 | |
%f | 十进制的微妙,零填充左边 | |
%Z | 当前时区的名称 | |
%j | 十进制表示的每年的第几天 | |
%U | 一年的星期数(00~53),星期天为星期的开始 | |
%W | 一年的星期数(00~53),星期一为星期的开始 | |
%x | 本地相应的日期表示 | |
%X | 本地相应的时间表示 | |
%% | %号本身 |
继续打开测试用例,做如下修改。
# !/usr/bin/env python # -*- coding: UTF-8 –*- __author__ = 'Mr.Li' from selenium import webdriver import unittest,time from HTMLTestRunner import HTMLTestRunner class Baidu(unittest.TestCase): '''百度搜索测试''' def setUp(self): self.driver = webdriver.Chrome() self.driver.maximize_window() self.driver.implicitly_wait(10) self.base_url = 'http://www.baidu.com' def test_baidu_search(self): '''搜索关键字:HTMLTestRunner''' driver = self.driver driver.get(self.base_url + "/") driver.find_element_by_id('kw').clear() driver.find_element_by_id('kw').send_keys('HTMLTestRunner') driver.find_element_by_id('su').click() title = driver.title self.assertEqual(title,"百度一下,你就知道") def tearDown(self): self.driver.quit() if __name__ == '__main__': testunit = unittest.TestSuite() testunit.addTest(Baidu('test_baidu_search')) #按照一定格式获取当前时间 now = time.strftime("%Y-%m-%d %H_%M_%S") #定义报告的存放路径 filename = '../report/' + now + 'result.html' fp = open(filename,'wb') #定义测试报告 runner = HTMLTestRunner(stream=fp, title='百度搜索测试报告', description='用例执行情况:') runner.run(testunit)#运行测试用例 fp.close()#关闭报告文件
通过strftime()方法指定的格式获取当前时间,将当前时间的字符串赋值给now便利。将now通过加号(+)拼接到生成的测试报告的文件名中。再次运行测试用例,生成的测试报告文件名如下图:
# !/usr/bin/env python
# -*- coding: UTF-8 –*-
__author__ = 'Mr.Li'
from selenium import webdriver
import unittest,time
from HTMLTestRunner import HTMLTestRunner
class Baidu(unittest.TestCase):
'''百度搜索测试'''
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(10)
self.base_url = 'http://www.baidu.com'
def test_baidu_search(self):
'''搜索关键字:HTMLTestRunner'''
driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_id('kw').clear()
driver.find_element_by_id('kw').send_keys('HTMLTestRunner')
driver.find_element_by_id('su').click()
title = driver.title
self.assertEqual(title,"百度一下,你就知道")
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
testunit = unittest.TestSuite()
testunit.addTest(Baidu('test_baidu_search'))
#按照一定格式获取当前时间
now = time.strftime("%Y-%m-%d %H_%M_%S")
#定义报告的存放路径
filename = '../report/' + now + 'result.html'
fp = open(filename,'wb')
#定义测试报告
runner = HTMLTestRunner(stream=fp,
title='百度搜索测试报告',
description='用例执行情况:')
runner.run(testunit)#运行测试用例
fp.close()#关闭报告文件