先上代码:
baidusousuo.py代码如下:
#coding=utf-8 from selenium import webdriver import time,unittest class baidu(unittest.TestCase): "百度" def setUp(self): self.driver=webdriver.Firefox() self.verificationErrors = [] self.accept_next_alert = True def test_baidu_search(self): "百度搜索" self.driver.get("http://www.baidu.com/") self.driver.find_element_by_id("kw").clear() self.driver.find_element_by_id("kw").send_keys("自动化测试") self.driver.find_element_by_id("su").click() time.sleep(2) title=self.driver.title print(title,self.driver.find_element_by_xpath("//div[@class='nums']").text) self.driver.close() def tearDown(self): self.driver.quit() self.assertEquals([],self.verificationErrors) if __name__=="__main__": unittest.main()
loginyf.py代码如下:
# coding=utf-8 from selenium import webdriver import time,unittest print("python") class login_yf(unittest.TestCase): "眼防" def setUp(self): self.driver=webdriver.Firefox() self.verificationErrors = [] self.accept_next_alert = True def test_login_yf(self): "眼防登录" self.driver.get("http://10.X.X.187:8085/epd/login") self.driver.find_element_by_id("username").clear() self.driver.find_element_by_id("username").send_keys("zhangjiang") self.driver.find_element_by_id("password").clear() self.driver.find_element_by_id("password").send_keys("123456") time.sleep(2) self.driver.find_element_by_id("submitId").click() self.driver.get_screenshot_as_file("d:/img/lod.png") print("title:",self.driver.title) name=self.driver.find_element_by_xpath("//div[@class='content_right_link']/a[1]").text print(name) if name == "退出登录" : print("登录成功!") else: raise NameError("user name error !") self.driver.close() def tearDown(self): self.driver.quit() self.assertEquals([],self.verificationErrors) if __name__=="__main__": unittest.main()
test_all.py代码如下:
#coding=utf-8 import unittest import HTMLTestRunner import baidusousuo import loginyf testunit=unittest.TestSuite() #将测试用例加入测试容器(套件)中 testunit.addTest(unittest.makeSuite(loginyf.login_yf)) print("test") testunit.addTest(unittest.makeSuite(baidusousuo.baidu)) #执行测试套件 # runner=unittest.TextTestRunner() # runner.run(testunit) #定义一个报告存放路径,支持相对路径 filename="d:\\img\\result.html" fp=open(filename,'wb') runner=HTMLTestRunner.HTMLTestRunner( stream=fp, title='测试报告', description='用例执行情况' ) # 执行测试用例 runner.run(testunit)
baidusousuo.py和loginyf.py是两个Test_case,all_test.py是执行测试用例,执行结果如下:
此例子还需要有很多地方的优化:
1,文件结构改进,Test_case文件夹,Data数据,all_test等。
2,用例的读取改进,discover
3,自动发送测试报告邮件
4,多线程/分布式执行测试用例
5,定时任务
6,管理自动化测试项目(git/svn/jenkins)
------------------------------------更新:增加时间戳命名测试报告文件-------------------------------------
每次run的时候生成的测试报告都会把之前的给覆盖掉,那么历史的测试报告就看不到了,对此,文件名称加上时间戳,就可以解决这个问题了。
首先获取到当前时间,也就是生成测试报告的当前时间,然后格式化,再添加到文件名称里面去。
代码如下:
now = time.strftime("%Y-%m-%d_%H:%M:%S",time.localtime(time.time())) filename="d:\\img\\"+now+"result.html"