代码先锋网 代码片段及技术文章聚合

【心善渊&Selenium3.0基础】— 26、Unittest单元测试框架介绍

技术标签: Selenium基础  python  单元测试  软件测试  unittest

(一)unittest基本简介

unittest是Python自带的一个单元测试框架,unittest又被称为PyUnit,是由Java的JUnit衍生而来,基本结构是类似的。对于单元测试,需要设置预先条件,对比预期结果和实际结果。

由于unittest是Python自带的标准模块,所以不需要单独再去安装。引入包import unittest即可使用。

(二)unittest基本概念

1、unittest核心的四个概念

  1. test fixture

    fixture表示test case运行前需要做的准备工作以及结束后的清理工作。比如,创建临时/代理数据库、目录或启动一个浏览器进程。

  2. test case

    test case是单元测试中的最小个体,通常是使用assert方法(断言)检查动作和输入的响应。

    unittest提供了一个基础类TestCase,一般是基于TestCase类进行扩充,来创建test case测试用例。

  3. test suite

    test suite(套件)是test case的合集,通常用test suitetest case按需求汇总后,统一执行。(批量执行用例)

  4. test runner

    test runner是一个执行器,用来执行测试用例或者套件。并将测试结果保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。并提供图形界面、文本界面或者返回一个值展示测试结果。

2、如何创建一个测试类

所有测试用例类都要继承TestCase基本类。

# 1. 导入unittest
import unittest

# 2. 定义一个测试类
class Test_demo(unittest.TestCase):

3、test fixture常用的四个方法

(1)基于函数级别的方法

  • setup():每个测试方法运行前执行一次。测试类中有多少测试用例执行多少次。
  • teardown():每个测试方法运行完后执行一次。测试类中有多少测试用例执行多少次。

(2)基于类级别的方法

  • setUpClass():在测试类执行前执行一次,需要@classmethod装饰器修饰。
  • tearDownClass():在测试类执行完后执行一次,需要@classmethod装饰器修饰。

4、unittest编写测试方法(用例)规范

  1. py文件需要以test开头。(规范,不必须)
  2. 测试类名称需要Test开头。(规范,不必须)
  3. 每个测试方法名称均以test开头,否则是不被unittest识别的。(规范,必须)
  4. 在unittest框架中,测试用例就是TestCase的实例,所以每个测试类必须继承unittestTestCase类来编写用例。
  5. 测试方法必须带self参数,用来单独运行或则组合运行用例。
  6. 测试用例的执行顺序是按照测试方法名的ASCII编码字符集的顺序进行排序的。

5、执行测试脚本

unittest.main():将一个单元测试模块变为可直接运行的测试脚本,main()方法是使用TestLoader类来搜索所有包含在该模块中以test命名开头的测试方法,并自动执行他们。

执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z

6、入门示例

"""
1.学习目标
    掌握unittest框架下测试用例编写方法
2.操作步骤
    2.1 导入unittest
    2.2 创建测试类
        测试类名称需要Test开头
        继承unittest中的TestCase基本类
        class Test_demo(unittest.TestCase):
    2.3 编写test fixture
        setUp()--前置函数
        tearDown()--后置函数
        setUpClass()--+@classmethod
        tearDownClass()+@classmethod
    2.4 编写test case
        测试方法名称均以test开头
        测试用例执行顺序:按照测试用例名称ASCII字符集编码排序。
        所以我们在执行测试类中的测试方法的时候,要注意测试方法的执行顺序。
3.需求
    编写简单的测试类
"""
# 1 导入unittest
import unittest


# 2 创建测试类
class Test_demo(unittest.TestCase):
    # 3 编写test fixture
    # setUp我们也称之为前置函数
    def setUp(self) -> None:
        print("setUp在每个测试用例执行前先执行。")
        
	# setUp我们也称之为后置函数
    def tearDown(self) -> None:
        print("tearDown在每个测试用例执行后执行。")

    @classmethod
    def setUpClass(cls) -> None:
        print("setUpClass在测试类执行前先执行。")

    @classmethod
    def tearDownClass(cls) -> None:
        print("tearDownClass在测试类执行后执行。")

    # 4 编写test case
    # 每个测试方法均以test开头,否则是不被unittest识别的。
    def test_case_03(self):
        """测试用例3,这里是测试用例的备注"""
        # 测试方法中,将多行注释写在第一行,就是该方法的备注。
        print("执行测试用例3")

    def test_case_02(self):
        """测试用例2"""
        print("执行测试用例2")

    def test_case_01(self):
        """测试用例1"""
        print("执行测试用例1")


if __name__ == '__main__':
    # 执行当前测试类中,以test开头的所有测试用例
    unittest.main()


"""
输出结果:
setUpClass在测试类执行前先执行。
setUp在每个测试用例执行前先执行。
执行测试用例1
tearDown在每个测试用例执行后执行。
setUp在每个测试用例执行前先执行。
执行测试用例2
tearDown在每个测试用例执行后执行。
setUp在每个测试用例执行前先执行。
执行测试用例3
tearDown在每个测试用例执行后执行。
tearDownClass在测试类执行后执行。
"""

提示:test fixture的四个方法,用到哪个写哪个就好,不用全部都写。

7、结果说明

测试执行完成后,会打印如下信息

# 运行了3个测试用例,执行的时间
Ran 3 tests in 0.008s

# 执行结果
OK

执行结果有如下三种

  • OK :表示测试用例全部通过。
  • F :表示测试用例没通过,代码没有问题。
  • E :表示代码有问题。
版权声明:本文为Liuyuelinjiayou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Liuyuelinjiayou/article/details/106521269

智能推荐

【心善渊&Selenium3.0基础】— 15、Selenium中单选按钮和多选按钮的操作

文章目录 1、页面中的单选按钮和多选按钮 2、判断按钮是否选中`is_selected()` 3、单选按钮的操作 4、多选按钮的操作 实现步骤: 示例: 5、选择部分多选按钮的操作 1、页面中的单选按钮和多选按钮 页面中的单选按钮和多选按钮样式如下图: 页面代码片段: 说明: 单选按钮,默认选框为圆形,type属性值为type="radio"。 多选按钮,默认选框为方形,typ...

【心善渊&Selenium3.0基础】— 25、Selenium中的expected_conditions模块

文章目录 1、expected_conditions模块介绍 2、expected_conditions模块常用类 3、expected_conditions模块独立使用 4、expected_conditions模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locator)示例(常用) (3)text_to_be_prese...

【心善渊&Selenium3.0基础】— 32、将普通的Selenium代码封装成POM模式

文章目录 1、案例说明: 2、加入unittest测试框架 3、加入元素显示等待 4、引入POM模式 (1)改造案例思路: (2)封装公共操作在base类 (3)每个页面对应一个page类 (4)原登陆案例封装完成代码 5、总结 1、案例说明: 这里只是提供一种封装的思路,小伙伴们可以根据自己的实际情况,按需封装。 以下是简单普通的登录测试用例: 那我们如何进行一个改造升级呢? 2、加入unitt...

Python+Selenium unittest单元测试框架

新建一个testbaidu.py的文件 导入unittest模块 当前测试类继承unittest.TestCase,相当于当前利用unittest创建了一个test case,这个test case是能够被unittest直接识别。 写setUP(),主要是打开浏览器和打开站点 写一个test_search()用例写搜索的代码 写tearDown(),主要是浏览器退出操作...

【selenium】:基于unittest框架的单元测试脚本

这是一个购物流程的unittest单元测试脚本。 有两个关注点: 1、调用了一个读取CSV文件的方法read(); 2、重写了父类的方法,@classmethod 直接调用,不需要实例化; 完整的代码演示如下: 注意: 1、测试方法要以"test_"开头,否则unittest.TestCase不识别,...

猜你喜欢

Python+selenium+unittest单元测试框架

Python+selenium+unittest单元测试框架 为什么要做单元测试 unittest是python的单元测试框架。是受测试框架JUnit 的启发,它提供了组织管理测试用例的功能,灵活的执行 测试用例,生成可视化测试报告的功能 注意:unittest自己本身没办法实现测试报告的生成,需要借助于插件来完成 单元测试之后,才是集成测试,单个单个的功能模块测试通过之后,才能把单个功能模块集成...

selenium unittest 单元测试

1. 认识单元测试 新建一个加法类 test_unittest_count.py 验证加法类,计算结果 test_unittest_add_test.py...

Python+Selenium框架设计篇之2-简单介绍unittest单元测试框架

       前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等。在继续介绍框架设计之前,我们先来学习一个工具,叫unittest。        unittest是一个单元测试框架,是Python编程的单元测试框架。有...

使用unittest框架做单元测试------基础版本

总结:使用unittest做单元测试的步骤 1、导入unittest模块,为了使用unittest框架 2、导入被测试对象,例如一个函数,一个类 3、创建一个测试类、并继承unittest.TestCase类 4、如果有初始化条件和结束条件,重写setUp和tearDown方法(可选) 5、以方法(函数)的形式写测试项,方法名以test_开头 6、使用unittest.main()运行测试用例,自...

【心善渊&Selenium3.0基础】— 22、Selenium实现通过cookie绕过验证码登陆

文章目录 1、验证码问题 2、处理验证码的方法 (1)去掉验证码 (2)设置万能码 (3)验证码识别技术 (4)记录cookie 3、Selenium实现通过cookie绕过验证码登陆 4、总结 1、验证码问题 对于web 应用来说,大部分的系统在用户登录时,都要求用户输入验证码。验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的。对于系统来说,使用验证码可以有效果的防...