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

前面有一篇对于常见元素的识别和操作的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参数。

时间: 2024-10-04 21:53:41

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

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

Web登录测试是很常见的测试!手动测试大家在熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化登录测试,给大家提供点参考!下面就包括测试代码和每种测试情况的截图: ''' cnblog的登录测试,分下面几种情况: (1)用户名.密码正确 (2)用户名正确.密码不正确 (3)用户名正确.密码为空 (4)用户名错误.密码正确 (5)用户名为空.密码正确(还有用户名和密码均为空时与此情况是一样的

python+selenium UI脚本用例

1.最近在用公司的一个工具拉取一些业务数据时发现有很多重复的页面操作,每次都要重复的选择机构与对应的表,点击添加操作(十几家机构加起来要手工添加两百多次),于是用python写了一个UI脚本让机器去执行这些重复的操作,即省时效率又高. #coding:utf8from selenium import webdriverfrom config.params import *from selenium.webdriver.support.ui import Selectimport time cla

Python Selenium unittest+HTMLTestRunner实现 自动化测试及发送测试报告邮件

1.UI测试框架搭建-目录结构 2. 文件介绍 2.1.baseinfo->__init__.py 配置文件定义基础参数 #-*-coding:utf-8-*- #测试用例配置参数 base_url = "http://xxxxx.com" undirect_username = "username" undirect_password = "password" direct_username = "username"

Python+Selenium ----unittest单元测试框架

unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做"PyUnit",是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java还有一个很好用的单元测试框架叫TestNG,本系列只学习Python,所以只需要unittest是Python里的一个单元测试框架就可以了.       unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是test,也就是一个测试用例.要了解

Python+Selenium搭建UI自动化测试框架

Python语言是非常强大的编程语言,很多时候也拿来当脚本语言用. Selenium是web应用测试工具,支持Java.Python等多种语言脚本,支持Chrome.Firefox等多种主流浏览器.主要实现的就是模拟人使用web应用,自动的打开浏览器.打开应用.进入应用进行各种模拟业务操作等等. 接下来,一步一步带领大家实现下Python+Selenium实现使用脚本自动发微博的功能. 1.Python安装 一般Linux系统自带了Python,Windows系统可以参考本人之前文章 [Pyth

豆瓣自动注册、回贴脚本 powered by Python & Selenium

前言,之前在豆瓣日志写了这片文章,结果被豆瓣删除了...哎 ----- 所删除内容 ----- <豆瓣自动注册.回贴脚本 powered by Python & Selenium> (2018-01-12 15:29) 故事起因: 上周的时候吧,发现有条疯狗在这张剧照(天生杀人狂)下面骂我.如果只是骂我傻逼我还能忍,毕竟人在江湖飘哪人不挨刀.但是你问候的范围大了,那作为一个社会主义核心价值观没有问题的青年,我必须得去操一下你妈了吧.请点击操他妈热线.结果这个怂逼居然还发私信骂我然后还把

Python+Selenium基础篇之5-第一个完整的自动化测试脚本

前面文章,我们介绍了如何采用XPath表达式去定位网页元素,在掌握了如何抓取或者如何书写精确的XPath表达式后,我们可以开始写自己的第一个真正意义上的webui 自动化测试脚本,就相当于,你在学习Python,如何在控制台打印Hello,Python! 一样. 我们的测试用例是:打开百度首页,搜索Selenium,然后检查搜索列表,有没有Selenium这个官网链接选项. 在写自动化脚本之前,需要明确手动脚本的步骤,然后去拆分到具体没一个步骤做什么,考虑好了之后,才开始动手去写脚本.我把这个测

自动化测试之Python + selenium = Web UI自动化测试

1.1Python的运行环境 在我决定学习一门新语言Python的时候,Python3已经出来了,目前是Python2与Python3同步维护,Python2拥有大量的类库,但是随着时间的发展,Python3才是以后发展的主流,所以在这里我选择的版本是Python3.安装Python:Python官方网站:https://www.Python.org/ 进入之后选择对应的版本进行下载,Python的下载很简单,下一步的傻瓜式操作就可以了,只是有一点需要注意的是在进到这个界面时(下图)需要勾选上A

WEB自动化(Python+selenium)的API

在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                                                                                                     WEB自动化测试培训2 课程目的 一.Webdriver API 的使用 课程内容 1    控制浏览器 Selenium 主要提供的是操作页面上各