码迷,mamicode.com
首页 > 编程语言 > 详细

第二个UI脚本--Python+selenium之unittest+HTMLtestRunner及python的继承

时间:2015-12-11 20:41:32      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:

前面有一篇对于常见元素的识别和操作的python自动化脚本,这一篇就接着聊下python的类继承,已经它的第三款unittest框架,和报告收集包HTMLtestRunner的应用。

还是直接上代码吧。

unittest和HTMLtestrunner的应用:

# coding = utf-8
import time
import unittest
import HTMLTestRunner
import os
import sys
from selenium import webdriver

# 继承unittest类
class testClass(unittest.TestCase):
    # unittest提供的初始化方法,setup,可以在这里进行一些初始化的准备工作
def setUp(self): print "setup" self.driver=webdriver.Firefox() self.driver.get("http://www.baidu.com") time.sleep(3)
    # 下面是测试方法
def testsearch2(self): input=self.driver.find_element_by_id(kw) search=self.driver.find_element_by_id(su) input.send_keys("byebye") search.click()
def testsearch(self): input=self.driver.find_element_by_id(kw) search=self.driver.find_element_by_id(su) input.send_keys("hello") search.click() print "assertion" self.assertTrue(search.is_displayed(),"baidu yixia should display")
    # 运行结束后的处理动作
def tearDown(self): print test down... #driver.quit() self.driver.close() if __name__ == __main__: #unittest.main(), 这里要说明一下, 如果测试方法是以test开头的,那么unittest可以识别出来,这里就可以直接调用它的main方法来执行所有测试方法了,运行顺序就是按测试方法的名字排序 #unittest.TestCase.assertTrue()

    #这块是获取项目路径,后面在生成report时会放到改目录下 current_path=os.getcwd() print current path: ,current_path project_path=os.path.dirname(current_path) print "project path:",project_path
    #这块是通过unittest的testsuite方式来组织测试 testsuite
=unittest.TestSuite() #testsuite.addTest(testClass("testsearch2")) testsuite.addTest(testClass("testsearch")) temp=str(time.time()) filedir=project_path+"//report//"+temp os.makedirs(filedir) filename="//pyresult.html" filepath=filedir+filename fp=file(filepath,wb)

    # 调用HTMLtestrunner来执行脚本并生成测试报告,html格式的 runner
=HTMLTestRunner.HTMLTestRunner(stream=fp,title=report,description=demo) runner.run(testsuite)

注: 上面带#号的都是注释, 由于直接编辑的原因,所以他没有显示成绿色,大家如果要复制出来,记得注意调整一下。

 

Python类的继承:

#coding=utf-8
from pyse import Pyse
from time import sleep

class Page(object):
    #login_url = ‘http://www.126.com‘

    def __init__(self, selenium_driver, base_url, parent=None):
        self.base_url = base_url
        self.driver = selenium_driver
        self.timeout = 30
        self.parent = parent

    def _iopen(self,url):
        #url = self.base_url + url
        self.base_url=url
        self.driver.open(url)
        assert self.on_page(),Did not land on %s % url

    def iopen(self):
        self._iopen(self.url)

    def on_page(self):
        print get_url is: ,self.driver.get_url()
        print base_url is: ,self.base_url
        return self.driver.get_url() == self.base_url

class login(Page):
    def systemout(self):
        print pass

def testlogin():
    driver=Pyse(ff)
    print get in
    url=http://www.baidu.com/
    lg=login(driver,‘‘)
    lg._iopen(url)

if __name__==__main__:
    testlogin()

这块是python类的继承,page继承根object类,然后login继承了page类,然后login就可以使用page类的方法了。

这里要说明的是,page类有2个方法,一个是_iopen(), 另一个是iopen(), 他们的区别就是,在用login的对象调用时:

调用iopen,不需要url参数,但是需要login类有url的成员,因为在其父类page里的self.url其实就是调用login自己的url成员。

而调用_iopen时,可以直接传递一个url参数。

 

第二个UI脚本--Python+selenium之unittest+HTMLtestRunner及python的继承

标签:

原文地址:http://www.cnblogs.com/jingwei/p/5039889.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!