微信号:grzlwx

介绍:光荣之路官方资讯

使用nose 进行Python项目的自动化测试(上)

2016-01-25 09:01 光荣之路

吴老的《selenium webdriver 实战宝典》出版了!

一、为什么使用nose?

  1. 编写测试更容易。nose可以自动识别继承于unittest.TestCase的测试单元,并执行测试,而且,nose也可以测试非继承于unittest.TestCase的测试单元。nose提供了丰富的API便于编写测试代码。

  2. 执行测试更容易。 只要遵循一些简单的规则去组织你的类库和测试代码,nose是可以自动识别单元测试的。执行测试是非常耗资源的,但是,一段第一个测试模块被加载后,nose就开始执行测试。

  3. 建立测试环境更容易。 

  4. 做你想做的事情更容易。 nose拥有很多内置的插件帮助进行暑输出抓取、错误查找、代码覆盖、文档测试(doctest)等等。同样,如果你不喜欢这些内置插件提供的功能或者这些插件不能满足你的项目结构,你可以自定义开发插件来完成你想要做的事情。

二、基本使用

   安装:pip install nose

   脚本命令:

            nosetests [options] [(optional) test files or directories]

            除了使用命令行这种方式之外,还可以在根目录下放置配置文件,配置文件的类型为.noserc或nose.cfg文件。配置文件都是标准的ini内容格式。例如:

[nosetests]
verbosity
=3
with-doctest
=1

三、扩展使用

    nose自动收集单元测试,收集它当前工作目录下的源代码文件、目录以及包。任何的源代码文件、目录或者包只要匹配正则表达式,他们就会被自动收集。包的测试收集按照树的层级级别一级一级进行,因此package.tests、package.sub.tests、 package.sub.sub2.tests将会被收集。

   匹配成功的包、任何python的源文件都会当做测试用例。

   3.1 选择测试用例

    将需要测试的名称传递给nose的命令行。格式如下:

nosetests only_test_this.py

   测试的名称可以是脚本文件的名称或者模块的名称,也可以使用colon表达式表达的测试名称。路径可以是相对的路径也可以是绝对的路径。如下所示:

nosetests test.module nosetests another.test:TestCase.test_method nosetests a.test:TestCase nosetests /path/to/test/file.py:test_function

    同样可以使用-w开关来切换当前的工作路径,从而改变nose查找测试用例的根路径。用法如下:

nosetests -w /path/to/tests

     更多关于自定义测试用例的收集与加载方式,可以使用插件的方式做到。

3.2 配置

   除了3.1通过脚本命令传递参数的方式外,你还可以在根目录下通过设置setup.cfg或者.noserc或者nose.cfg等配置文件达到同样的目的。例如:

[nosetests]
verbosity
=3
with-doctest
=1

  所有查找到的配置文件将会被加载,而且配置项的值会合并。如果想覆盖标准的配置文件,使用-c选项。

3.3 使用插件

     使用pip安装所需要的插件,然后通过nosetests命令行配置插件。执行如下命令验证所安装的插件,

nosetests –plugins

  在命令行中添加

-v或者-vv选项可以显示每一个插件的更多信息。 如果通过nose.main()或者nose.run()执行测试,可以将要使用的插件关键字参数的列表传递进去。

3.4  配置选项

-V,—version

    输出nose的版本

-p,—plugins

    输出可获取的插件列表。

-v=DEFUALT,—verbose=DEFAULT

   使用更多的verbose

--verbosity=VERBOSITY

    设置verbosity;--verbosity=2与-v设置一致

-q,—quiet=DEFAULT

   使用更少的verbose

-c=FILES,—config=FILES

   设置配置文件。可以设置很多次,然后将所有的配置文件合并。

-w=WHERE,--where=WHERE

   设置查找的根目录。

-py3where=WHERE

   顾名思义,针对python3.x以上设置查找路径。

-m=REGEX,--match=REGEX,—testmatch=REGEX

   设置用于自动化收集用例的正则表达式。

--tests=NAMES

  执行这些测试。

--debug-log=FILE

   设置调试的日志文件路径。

--logging-config=FILE,—log-config=FILE

  设置日志文件的配置文件。

-I=REGEX,—ignore-files=REGEX

  设置自动收集测试用例时忽略的正则表达式。

-e=REGEX,—exclude=REGEX

  排除要执行的测试用例的正则表达式

-i=REGEX,—include=REGEX

   包含要执行的测试用例的正则表达式

-x,—stop

  执行测试发生错误后,停止执行测试。

--noexe

   不查找可以执行文件。

-a=ATTR,--attr=ATTR

  只执行包含ATTR属性的测试用例。

-A=EXPR,—eval-attr=EXPR

  只执行属性与EXPR匹配的测试用例。

-s,—nocapture

   不抓取标准输出(stdout)

--nologcapture

   禁止使用日志插件

--logging-format=FORMAT

   打印语句的自定义格式

--logging-datefmt=FORMAT

  日志的日期时间格式

--logging-filter=FILTER

  日志语句的过滤器。

--logging-clear-handlers

  清除日志的其他handlers

--logging-level=DEFUALT

   设置日志的等级

--with-coverage

   开启coverage插件

--cover-package=PACKAGE

   限定coverage所在包

--cover-erase

  在执行之前 清除上次coverage统计结果

--cover-testes

  在coverage报告中包含测试模块

--cover-html

  产生html的coverage报告

--cover-html-dir=DIR

  设置存储html的目录

--cover-xml

   产生xml的coverage报告

--cover-xml-file=FILE

   设置存储coverage报告的xml文件

--cover-config-file=DEFUALT

  设置coverage的配置文件

-pdb

   当测试失败或产生错误是进入调试模式

--pdb-failures

  当测试失败时进入调试模式

--pdb-errors

  当测试产生错误时进入调试模式

--with-doctest

开启doctest插件

--doctest-tests

  在测试模块中查询doctests

--with-profile

   开启profile插件

--profile-sort=SORT

  设置profiler 输出排序

--profile-stats-file=FILE

  设置统计所在的文件地址

--with-id

  开启TestId插件

--processes=NUM

  开始测试处理器的个数

--processes-timeout=SECONDS

  设置超时时间。

--with-xuint

  开始Xunit插件

--xuint-file=FILE

  设置XUnit报告所在的xml文件

--all-modules

   开启AllModules插件

--collect-only

  开启只收集测试功能。只收集测试用例及输出测试名字,而不执行测试

<未完待续>

(作者:廖飞 来源:http://www.cnblogs.com/liaofeifight/p/5148717.html)

公益传播测试知识、技能与正能量!感谢作者!
分享测试生活,思考测试人生!欢迎投稿!
文章图片来自网络,如有侵权请见谅,请联系我们妥善处理。
735821166@qq.com

光荣之路
软件测试培训


官网:www.gloryroad.cn

微信公众号:gloryroadtrain

性能测试QQ群:415987441
测试招聘QQ群: 203715128
自动化3群QQ: 371211499

Python群:457561756


 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 程序员的暴力美学 腾讯设计师对一款移动记账APP的设计探索 一个挺有意思的OOM Case 大数据利器:浅谈数据可视化那些可用的工具和示例 GOOGLE SRE 面试经验