前面有一篇对于常见元素的识别和操作的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的继承的更多相关文章

  1. python selenium 使用unittest 示例

    python selenium 使用unittest 示例 并等待某个元素示例 from selenium.webdriver.support.ui import WebDriverWait from ...

  2. Python+Selenium框架unittest执行脚本方法之discover()方法

    继续接着介绍,如何利用unittest管理和执行测试用例的问题,这里我们还是利用之前已经有的三条测试用例,如果你跳过了前面文章,请回到框架设计篇的第八篇和第七篇,里面有相关测试类的文件.本文来介绍,如 ...

  3. Python+Selenium框架-unittest执行脚本方法之addTest

    本文开始介绍如何通过unittest来管理和执行测试用例,这一篇介绍unittest下addTest()方法来加载测试用例到测试套件中去.为了演示效果,我在前面文章的脚本基础上,新建了一个测试脚本,这 ...

  4. Python+selenium之unittest单元测试(3)关于测试用例执行的顺序

    一.测试用例执行的顺序 用例的执行顺序涉及多个层级,在多个测试目录的情况下,先执行哪个目录?在多个测试文件的情况下,先执行哪个文件?在多个测试类的情况下,先执行哪个测试类?,在多个测试方法(用例)的情 ...

  5. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  6. 一次简单完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试,手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文就基于python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化 ...

  7. Python+selenium之读取配置文件内容

    Python+selenium之读取配置文件内容 Python支持很多配置文件的读写,此例子中介绍一种配置文件的读取数据,叫ini文件,python中有一个类ConfigParser支持读ini文件. ...

  8. Python+Selenium(1)- 环境搭建

    一,Selenium 简介 Selenium是目前最流行的web自动化测试工具,也常用于网络爬虫,已经更新到3以上的版本. 1,组件 它提供了以下web自动化测试组件: Selenium IDE,Fi ...

  9. Python+selenium之带unittest的脚本分析

    from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.c ...

随机推荐

  1. linux 屏幕录像(recordmydesktop)

    需求:命令行工具进行屏幕录像ffcast ffmpeg 简单点的是recordmydesktop. 1. 安装: apt-get install gtk-recordmydesktop recordm ...

  2. Android笔记——JDK实现WebService服务

    以天气预报为例,国家气象局计算的天气信息后在其服务器Server通过WebService对外暴露天气信息数据,客户端无论是java平台,ios平台,c#平台都可以通过WebService获取数据.体现 ...

  3. ActiveMQ简单的HelloWorld实例

    我们使用ActiveMQ为大家实现一种点对点的消息模型. 开发时候,要将apache-activemq-5.12.0-bin.zip解压缩后里面的activemq-all-5.12.0.jar包加入到 ...

  4. Jenkins最佳实践

    原文:http://www.cnblogs.com/itech/archive/2011/11/14/2248460.html Jenkins最佳实践,其实大部分对于其他的CI工具同样的适用: * J ...

  5. 学习了初级的Python

    今天傍晚完成了Code Academy上Python的所有练习,感觉Python的原力在我身体里流淌......下面要学习一些进阶的东西.之前Zhi哥跟我说Python比较简单,我还不太信.其实早在四 ...

  6. iOS:分割控制器UISplitViewcontroller

    分割控制器UISplitViewController <1>功能:它也是ipad的一个新特性,在屏幕上可以同时显示两个控制器,左边一个,右边一个:左边的为主控制器,右边的为详细控制器,主控 ...

  7. html 用图片代替重置按钮

    提交时,若把按钮设置成图片提交特别方便只要 <input type="image" alt="点此提交" src="images/button. ...

  8. USACO Section 2.2: Preface Numbering

    搬了leetcode的代码 /* ID: yingzho1 LANG: C++ TASK: preface */ #include <iostream> #include <fstr ...

  9. 动态网页制作PHP常用的正则表达式

    匹配中文字符的正则表达式: [u4e00-u9fa5] 匹配双字节字符(包括汉字在内): [^x00-xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空行的正则表达 ...

  10. mysql0000-00-00日期异常及解决方法

    当mysql的datetime类型的值设置为0000-00-00 00:00:00(或者 0000-00-00)的时候,java的datetime或者timestamp读取到这个值并转换的时候,将抛出 ...