nose2 这个自动化工具让我写代码快了一倍

发布于 更新于
本文目录
  1. 一,快速开始
  2. 二,安装
  3. 三,运行测试用例
  4. 1,运行指定文件夹下的测试用例
  5. 2,运行指定的测试用例
  6. 四,测试用例的命名
  7. 五,总结

技术文章测试基础与用例

如果你学过 python 进行自动化测试,你一定使用过 unittest。今天我们要讲的 nose2 是一个高级版本的 unittest。他比 unittest 更容易理解,用起来也更加方便一些。

如果你学过 python 进行自动化测试,你一定使用过 unittest。今天我们要讲的 nose2 是一个高级版本的 unittest。他比 unittest 更容易理解,用起来也更加方便一些。


一,快速开始

nose2 在 unittest 的基础上开发的,所以如果你之前是用 unittest 做测试,但是有想使用 nose2 的新特性,你可以在不改变原有代码的情况下直接使用 nose2。

import unittest
import nose2

class TestAdd(unittest.TestCase):
    def test_add(self):
        self.assertEqual(1+1, 3)

if __name__ == '__main__':
    # 只需要替换这一行
    # unittest.main()
    nose2.main()


二,安装

nose2 是第三方库,需要自己安装,直接在 cmd 运行 pip 指令安装:

pip install nose2


三,运行测试用例

在快速开始当中,我们使用了在 python 代码中用 nose2.main() 的方式去运行测试用例,这样是完全 OK 的。

还有另外一种运行方式:直接在命令行通过 nose2 命令运行。他会在python文件中查找名称以 test 开头的测试文件,并运行它发现的每个以 test 开头的测试函数名称。比如说我的项目当中有 test_add.py, test_minus.py 这些文件,如果我想运行所有的测试用例,只需要在当前文件下输入 cmd 命令,他就会自动去查找所有的测试用例,然后去执行:

nose2


1,运行指定文件夹下的测试用例

nose2 -s 文件夹名称

我把登录相关的用例都放到一个叫 login_case 的文件夹当中,当我执行 nose2 -s login_case 的时候,其他的用例是不会执行的, nose2 只会去找 login_case 文件夹下面的用例。 image.png


2,运行指定的测试用例

nose2 login_case.test_nose2_dir.test_login

在这个例子当中:

  • login_case 是存储的文件夹

  • test_nose2_dir 是文件名称

  • test_login 是测试用例方法的名称

每一个层级之间,用 . 号隔开。

如果想测试 test_nose2_dir.py 文件下的所有用例:

nose2 login_case.test_nose2_dir

如果想测试 login_case 文件夹下的所有用例:

nose2 login_case


四,测试用例的命名

为什么 nose2 可以自动查找用例并且执行呢?是因为他在内部制定了规则,然后根据规则去判定。

比如首先他规定,你所有的测试用例文件名称应该以 test 开头,如果你不这么做,那这个文件就不是测试用例文件。以下的文件名都会被判定为测试用例文件:

test.py
test_add.py
testRegister.py

而这一些不会被判定为测试用例文件,从而被忽略:

add_test.py
a_test.py
register_test_file.py


五,总结

本篇我们介绍了 nose2 的简单入门:

  • nose2 是在 unittest 的基础上实现的,可以和 unittest 兼容,如果你没有接触过 unittest, 建议先从 unittest 学起,很多同学在网上看到一些说 unittest 过时或者是说 unittest 不高级的言论就开始批判,不对。 unittest 是 其他 python 单元测试框架的基础,没学好 unittest , 其他的框架你也学不好。

  • nose2 可以自动发现测试用例,你只需要运行 nose2 命令就可以,用起来非常简单。

  • nose2 的测试用例名称要符合规范,以 test 开头,否则不会被判定为用例。

  • 你可以通过 -s 运行指定文件下的用例,也可以通过 . 号去运行单个用例。

来源:testingpai

继续阅读