发生背景:

    最近开始整理Selenium+python自动化测试项目中相关问题,偶然间翻起自己当时学习自动化时候写的脚本,发现我已经快认不出来写的什么鬼流水账了,所以今天特别整理下自动化开发Selenium+python脚本的基本示例;

示例脚本:

    1、在这里拿最简单的示例代码分别讲解写脚本时候需要注意的地方,和各模块的作用;   

# -*- coding:utf-8 -*-
__author__='dong.c'
from selenium import webdriver
import unittest
import HTMLTestRunner
import sys
from time import sleep
reload(sys)
sys.setdefaultencoding('utf-8')
class BaiduTest(unittest.TestCase):
"""百度首页搜索测试用例"""
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = u"http://www.baidu.com"
def test_baidu_search(self):
driver = self.driver
print u"开始[case_001]百度搜索"
driver.get(self.base_url)
#验证标题
self.assertEqual(driver.title,u"百度一下,你就知道")
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys(u"博客园")
driver.find_element_by_id("su").click()
sleep(3)
#验证搜索结果标题
self.assertEqual(driver.title,u"博客园_百度搜索")
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
testunit = unittest.TestSuite()
testunit.addTest(BaiduTest('test_baidu_search'))
#定义报告输出路径
htmlpath = u"testReport.html"
fp = file(htmlpath,"wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"百度测试",description = u"测试用例结果")
runner.run(testunit)
fp.close()

代码解释:

    1、总体上代码分为五大块:

      a、文件保存编码及作者定义

      # -*- coding:utf-8 -*-

      __author__='dong.c'

      b、导入相关基础模块

      #从selenium中导入webdriver模块

      from selenium import webdriver

      #导入unittest模块,作为用例基类

      import unittest

      #导入html报告生成模块,用于html格式报告生成

      import HTMLTestRunner

      #导入sys模块

      import sys

      #导入sleep模块,用于强制等待

      from time import sleep

      c、设置当前pythony运行环境为utf-8

      #设置当前python运行在utf-8编码下,这样你的中文就不会乱码了

      reload(sys)

      sys.setdefaultencoding("utf-8")

      d、定义和实现测试用例

      #从unittest.TestCase继承

      class BaiduTest(unittest.TestCase):

        """百度首页搜索测试用例"""

        #用例初始化函数,自动执行

        def setUp(self):

          #初始化基于firefox浏览器的实例

          self.driver = webdriver.Firefox()

          #给当前webdriver设置全局隐性等待时间,最大30s

          self.driver.implicitly_wait(30)

          #设置url首页

          self.base_url = u"http://www.baidu.com"

        def test_baidu_search(self):

          #简单赋值,这样在本次测试后继续不用每次都写self.driver;

          driver = self.driver

          #在控制台打印输出

          print u"开始[case_001]百度搜索"

          #启动浏览器,并访问首页

          driver.get(self.base_url)

          #验证标题

          self.assertEqual(driver.title,u"百度一下,你就知道")

          #清理输入框中的数据

          driver.find_element_by_id("kw").clear()

          #在输入框中输入博客园

          driver.find_element_by_id("kw").send_keys(u"博客园")

          #单击百度搜索

          driver.find_element_by_id("su").click()

          #强制等待3s

          sleep(3)

          #验证搜索结果标题

          self.assertEqual(driver.title,u"博客园_百度搜索")

        #用例级清理函数、自动执行

        def tearDown(self):

          #退出webdriver,同时关闭当前webdriver session下所有浏览器窗口

          self.driver.quit()

     e、测试脚本主运行入口

      #python main函数

      if __name__ == '__main__':

        #初始化一个用例套件集

        testunit = unittest.TestSuite()

        #往用例套件集中添加一个测试

        testunit.addTest(BaiduTest('test_baidu_search'))

        #定义报告输出路径,这里是当前目录

        htmlpath = u"testReport.html"

        #打开测试报告文件

        fp = file(htmlpath,"wb")

        #构建一个HTMLTestReport执行器

        runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"百度测试",description = u"测试用例结果")

        #运行测试集

        runner.run(testunit)

        #关闭打开的测试报告文件

        fp.close()

运行代码:

    使用上述命令运行后发现打开了百度首页,输入博客园后单击一下百度一下按钮,显示出搜索结果后关闭了浏览器;在当前目录下生成了html格式的测试报告文件;

    

总结:

    要注意的关键点,确保selenium环境已经配置好,对应浏览器驱动已经下载;

    确保下载了HTMLTestRunner文件;

    对应环境问题下篇博客介绍;

Selenium_python自动化第一个测试案例(代码基本规范)的更多相关文章

  1. Selenium_python自动化跨浏览器执行测试

    Selenium_python自动化跨浏览器执行测试(简单多线程案例)  转:https://www.cnblogs.com/dong-c/p/8976746.html 跨浏览器测试是功能测试的一个分 ...

  2. Selenium(十四):自动化测试模型介绍、模块化驱动测试案例、数据驱动测试案例

    1. 自动化测试模型介绍 随着自动化测试技术的发展,演化为了集中模型:线性测试.模块化驱动测试.数据驱动测试和关键字驱动测试. 下面分别介绍这几种自动化测试模型的特点. 1.1 线性测试 通过录制或编 ...

  3. ENode 2.0 - 第一个真实案例剖析-一个简易论坛(Forum)

    前言 经过不断的坚持和努力,ENode 2.0的第一个真实案例终于出来了.这个案例是一个简易的论坛,开发这个论坛的初衷是为了验证用ENode框架来开发一个真实项目的可行性.目前这个论坛在UI上是使用了 ...

  4. Storm自带测试案例的运行

    之前Storm安装之后,也知道了Storm的一些相关概念,那么怎么样才可以运行一个例子对Storm流式计算有一个感性的认识呢,那么下面来运行一个Storm安装目录自带的测试案例,我们的Storm安装在 ...

  5. 编写优美的GTest测试案例

    http://www.cnblogs.com/coderzh/archive/2010/01/09/beautiful-testcase.html 使用gtest也有很长一段时间了,这期间也积累了一些 ...

  6. robotframework+selenium搭配chrome浏览器,web测试案例(搭建篇)

    这两天发布版本 做的事情有点多,都没有时间努力学习了,先给自己个差评,今天折腾了一天, 把robotframework 和 selenium 还有appnium 都研究了一下 ,大概有个谱,先说说we ...

  7. gtest命令行测试案例

    使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便.同时,gtest也为我们提供了一系列的运行参数(环境变量.命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的 ...

  8. 如何利用Azure DevOps快速实现自动化构建、测试、打包及部署

    前两天有朋友问我,微软的Azure好用吗,适不适合国人的使用习惯,我就跟他讲了下,Azue很好用,这也是为什么微软云营收一直涨涨涨的原因,基本可以再1个小时内实现自动化构建.打包以及部署到Azure服 ...

  9. 自动化接口差异测试-diffy 回归测试 charles rewrite 请求

    https://mp.weixin.qq.com/s/vIxbtQtRRqgYCrDy7XTcrA 自动化接口差异测试-diffy Boris 搜狗测试 2018-08-30   自动化接口差异测试- ...

随机推荐

  1. C#中IL, CTS, CLR, CLS, JIT含义

    1. IL/MSIL  (Microsoft Intermediate Language) 微软中间语言 (IL是MSIL的缩写,译为中间语言) 2. CTS  (Common Type System ...

  2. 沉淀再出发:jetty的架构和本质

    沉淀再出发:jetty的架构和本质 一.前言 我们在使用Tomcat的时候,总是会想到jetty,这两者的合理选用是和我们项目的类型和大小息息相关的,Tomcat属于比较重量级的容器,通过很多的容器层 ...

  3. Mininet自定义网络拓扑

    在Mininet上的网络拓扑有两种方式 第一种 用mininet自带的miniedit可视化工具,在mininet/mininet/examples/的目录下的一个miniedit.py,运行这个文件 ...

  4. olivehc--百度开源的cdn cache

    github 地址:http://git.baidu.com/olivehc/olivehc 主要是为了方便管理,百度cdn承载了全百度40%的流量,但是cdn团队只有几个人(一次培训中提到只有4个) ...

  5. PHP版本解密openrtb中的价格

    Decrypt Price Confirmations 原文地址 https://developers.google.com/ad-exchange/rtb/response-guide/decryp ...

  6. 可以在命令行直接使用密码来进行远程连接和远程拉取文件的命令:sshpass

      应用范围:可以在命令行直接使用密码来进行远程连接和远程拉取文件. 使用前提:对于未连接过的主机.而又不输入yes进行确认,需要进行sshd服务的优化: # vim /etc/ssh/ssh_con ...

  7. 4.12 Spark环境更新

    addJar方法是做什么的呢?它用于将Jar文件添加到Driver的RPC环境中. 通过addJar和addFile可以将各种任务执行所依赖的文件添加到Driver的RPC环境中, •小结 伴生对象是 ...

  8. Monkeyrunner命令

    1.使用Monkeyrunner脚本命令时,需要导入模块才能使用模块的脚本命令,Monkeyrunner的常用模块有 MonkeyRunner,MonkeyDevice,MonkeyImage,Mon ...

  9. Java并发基础概念

    Java并发基础概念 线程和进程 线程和进程都能实现并发,在java编程领域,线程是实现并发的主要方式 每个进程都有独立的运行环境,内存空间.进程的通信需要通过,pipline或者socket 线程共 ...

  10. 关于UWB技术:DecaWave公司的DW1000芯片资料

    关于人在隧道工作时都需要准确的精确度确定精准的位置.DecaWave公司的DW1000芯片,对定位上的精确度更是再适合不过了.符合IEEE802.15.4-2011超宽带标准.按照数据手册上应该最小误 ...