Selenium_python自动化第一个测试案例(代码基本规范)

Posted dchaoinfo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium_python自动化第一个测试案例(代码基本规范)相关的知识,希望对你有一定的参考价值。

发生背景:

    最近开始整理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自动化第一个测试案例(代码基本规范)的主要内容,如果未能解决你的问题,请参考以下文章

Selenium_Python测试对象操作之:table表格

Selenium_python自动化环境搭建篇

性能测试-第02天-JMeter环境搭建完成第一个案例

Cypress学习16-参数化,数据驱动测试案例

Cypress学习16-参数化,数据驱动测试案例

性能测试-第03天-以案例理解JMeter主要元素以及相关的作用域