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

unittest是一个单元测试框架,是Python编程的单元测试框架。有时候,也做叫做“PyUnit”,是Junit的Python语言版本。这里了解下,Junit是Java语言的单元测试框架,Java还有一个很好用的单元测试框架叫TestNG,本系列只学习Python,所以只需要unittest是Python里的一个单元测试框架就可以了。
       unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是test,也就是一个测试用例。要了解unittest单元测试框架,先来了解以下几个重要的概念。
测试固件(test fixture)
      一个测试固件包括两部分,执行测试代码之前的准备部分和测试结束之后的清扫代码。这两部分一般用函数setUp()和tearDown()表示。这里举例以下,例如要测试百度搜索selenium这个场景,我们的测试固件可以这样写,setUp()里写打开浏览器,浏览器最大化,和打开百度首页等脚本代码;在tearDown()里写结束搜索后,退出并关闭浏览器的代码。
测试用例(test case)
       unittest中管理的最小单元是测试用例,一个测试用例,包括测试固件,和具体测试业务的函数或者方法。一个测试用例中,测试固件可以不写,但是至少有一个已test开头的函数。unittest会自动化识别test开头的函数是测试代码,如果你写的函数不是test开头,unittest是不会执行这个函数里面的脚本的,这个千万要记住,所有的测试函数都要test开头,记住是小写的哦。
测试套件 (test suite)
       很简单,就是很多测试用例的集合,叫测试套件,一个测试套件可以随意管理多个测试用例。如果测试用例比作单个学生,测试套件就是好像是班级的概念。
测试执行器 (test runner)
       test runner是一个用来执行加载测试用例,并执行用例,且提供测试输出的一个组建。test runner可以加载test case或者test suite进行执行测试任务。

我们举例来,练习一下test fixture和test case的使用,学习unittest的简单用法:
1. 新建一个testbaidu.py的文件
2. 导入unittest模块
3. 当前测试类继承unittest.TestCase,相当于当前利用unittest创建了一个test case,这个test case是能够被unittest直接识别。
4. 写setUP(),主要是打开浏览器和打开站点
5. 写一个test_search()用例写搜索的代码
6. 写tearDown(),主要是浏览器退出操作

相关脚本代码如下:

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

class BaiduSearch(unittest.TestCase):
    def setUp(self):
        """
        测试固件的setUp()的代码,主要是测试的前提准备工作
        :return:
        """
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(8)
        self.driver.get("https://www.baidu.com")

    def tearDown(self):
        """
        测试结束后的操作,这里基本上都是关闭浏览器
        :return:
        """
        self.driver.quit()

    def test_baidu_search(self):
        """
        这里一定要test开头,把测试逻辑代码封装到一个test开头的方法里。
        :return:
        """
        self.driver.find_element_by_id(‘kw‘).send_keys(‘selenium‘)
        time.sleep(2)
        try:
            assert ‘selenium‘ in self.driver.title
            print (‘Test Pass.‘)
        except Exception as e:
            print (‘Test Fail.‘, format(e))

if __name__ == ‘__main__‘:
    unittest.main()

最后结尾处的unittest.main(),添加这个是支持在cmd,里面,cd到这个脚本文件所在的目录,然后Python 脚本名.py执行,如果不添加这一段,是无法执行cmd里面运行脚本的,在PyCharm中,不添加最后一段,也可以通过,右键 Run "unittest xxx",来达到执行效果。

时间: 2024-10-12 17:42:05

Python+Selenium ----unittest单元测试框架的相关文章

Python 中 unittest 单元测试框架中需要知识点

现在正在使用 unittest 框架,我们来记录下这个框架的知识点: unittest 框架:我们在写接口用例的时候,会继承 unittest 当中的 TestCase 的类和方法,私有方法除外,来识别以 test_ 开头的测试用例,unittest 相当于是一个包,我们来使用包里面的工具: 1. 单元测试的概念 测试不是来测试Java写的模块.函数.类 而是测试代码输入和输出,比对是否正确 往往单元测试, 是有开发来写, 用于测试自己写的模块.函数.类是否正确 有的一些单元测试任务, 是由测试

利用Python的unittest单元测试框架的discover方法批量执行脚本用例

1.在用Python自动化时,执行单个脚本用例那都是so easying当脚本用例不断地增多时,那就蒙蔽了,一个个来跑到什么时候才跑完,所以discover方法作用就出来,废话不多,小编直接上代码了,如有疑问,可以咨询小编 #!/usr/bin/python# -*- coding: utf-8 -*-from selenium import webdriverimport time,osfrom selenium.webdriver.common.action_chains import Ac

python+selenium+unittest测试框架2-装饰器@classmethod

装饰器@classmethod 一.装饰器@classmethod 多个用例可能需要多次打开浏览器,装饰器@classmethod只打开一次浏览器.classmethod是python里的类方法,@是修饰符号. 1.setUpClass(): @classmethod def setUpClass(cls): 2.tearDownClass(): @classmethod def tearDownClass(cls): 示例: from selenium import webdriver fro

python+selenium+unittest测试框架3-项目构建和发送邮件

项目构建和发送邮件 一.项目构建 1.建立项目chen 打开pycharm左上角File>New Project,在Location输入testing项目所在文件夹D:\chen,创建后选择Opin in current window. 2.创建子文件夹 PS:创建文件夹,一定要选Python Package的方式创建. 3.创建测试脚本 4.创建runalltest.py PS:在runalltest.py这个脚本里面写主函数,控制执行所有的用例. 5.下载生成测试报告的源码 import H

python+selenium+unittest测试框架4-邮件发送最新测试报告

邮件发送最新测试报告 示例: import HTMLTestRunner import unittest import os import time import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart def allcase(): '''加载测试用例''' discover = unittest.defaultTestLoader.discover(c

python中unittest单元测试框架-加载测试用例、运行测试用例、生成测试报告

unittest中加载测试用例的方法很多,这里先介绍addTest中添加用例-测试类的实例的方式: import os import unittest # 创建suite对象 suite = unittest.TestSuite() # 第一种方法:一个一个添加用例 from class1228_unittest_loader.test_cases.test_setup import * # 添加测试用例到suite套件里面:用例-测试类的实例 suite.addTest(TestSetUp('

selenium unittest单元测试框架2

原文地址:https://www.cnblogs.com/bzdmz/p/10347337.html

selenium unittest单元测试框架2(多个文件)

testsub.py testadd.py testall.py 所文件及类都导入进来,适用于比较小的用例 注意,引用的文件内容的import要使用带点的方法 如果文件比较多的情况下使用这种方法:匹配符 运行结果 注意:使用这种方式,需要将引用的文件里的.去掉,否则会报错. 多文件夹的形式:每个文件夹下都必须添加一个__init__.py文件 想要跳过某种用例: 用main或者dinscover方法执行时,可在原用例前加这句 直接标记为失败 . 原文地址:https://www.cnblogs.

Selenium基于Python web自动化基础二 -- 免登录、等待及unittest单元测试框架

一.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去掉验证码 1.手动在请求中添加cookies信息 1 url = "http://www.baidu.com" 2 driver = webdriver.Firefox() 3 driver.get(url) 4 time.sleep(3) 5 #添加cookies的方式 6 7 c1 =