随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
学习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()#关闭报告文件