unittest 单元测试框架(一)

先上代码:

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"

猜你喜欢

转载自xiaojingjing.iteye.com/blog/2298820