百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

每天学点自动化测试技术:详解Python单元测试框架-nose

off999 2024-11-03 14:14 34 浏览 0 评论

Nose是一个Python单元测试的扩展,能自动发现并运行测试,使得测试更容易。

框架介绍

nose是一个第三方单元测试框架,它完全兼容unittest,并且号称是一个更好用的测试框架。

1、用例的编写方式除了编写继承于unittest.TestCase的测试类外,还可以编写成没有继承的测试类。同时nose也支持定义函数来作为测试。

2、unittest所支持的用例发现和执行能力,nose均支持,nose支持用例自动(递归)发现。

3、使用nosetests命令,默认发现当前目录下所有包含test的测试用例,不包括以 _ 开头的用例。

4、通过-w参数指定要自动发现的目录,-m参数指定用例文件、目录、函数、类的名称模式(正则匹配),例如:nosetests -w project_directory "test_.+"。

5、nose也支持执行指定用例:

指定测试模块:nosetests test.module

指定测试类:nosetests a.test:TestCase

指定测试方法:nosetests another.test:TestCase.test_method

指定测试文件路径:nosetests /path/to/test/file.py

指定测试文件路径+测试类或测试函数(这是 unittest 所不支持的):

nosetests /path/to/test/file.py:TestCase

nosetests /path/to/test/file.py:TestCase.test_method

nosetests /path/to/test/file.py:test_function

6、测试装置(Fixtures):nose支持unittest所支持的定义测试前置和清理方式。

7、子测试/测试生成器:nose除了支持unittest中的 TestCase.subTest,还支持测试生成器(Test generators),通过yield实现。

8、测试前置和清理:nose支持setup和teardown函数,在测试用例的前后执行。

四种作用域:

package

可以在__init__.py中定义,setup方法名可以是setup, setup_package, setUp, or setUpPackage,而teardown方法名可以是teardown, teardown_package, tearDown or tearDownPackage。比如定义数据库的连接和释放。

module

在模块内定义setup,setup_module, setUp or setUpModule,和/或teardown,teardown_module, or tearDownModule。

class

function

任何符合正则的函数都会被包装成FunctionTestCase。

除此之外,nose相较于unittest自带了很多有用的插件,也有丰富的第三方插件。

比如MultiProcess插件,支持多进程并发测试的用例、支持assert断言、超时机制(from nose.tools import timedimport time@timed(1)def test_lean_5():time.sleep(2)pass)、可结合ddt对用例进行参数化设置、还可以进行失败案例重跑(nosetests -v --failed)、支持跳过指定用例、可利用pip install nose-htmloutput--with-html --html-file=生成测试报告、可以生成xml测试报告(--with-xunit)。

工具获取及安装

Nose属于python的第三方单元测试框架,需要单独安装。

第一种方法:直接pip install nose

第二种方法:从官网上直接下载安装包,解压后安装

网址:https://pypi.org/project/nose/1.3.7/#files

tar -zvxf nose-1.3.7.tar.gz

cd nose-1.3.7

python setup.py install

Nose与nose2区别

nose2是nose的继任者。目的是让编写和运行测试用例变得更容易。

nose2的主要目的是扩展Python的标准单元测试库unittest,提供丰富的插件,例如测试用例加载器、覆盖度报告生成器、并行测试等内置插件和第三方插件,让单元测试变得更加完善。

它们有很多相同点,比如都兼容unittest,支持使用函数作为测试用例,支持子测试,拥有插件体系。

但也有很多不同点:

发现和载入测试

nose自行实现了模块加载功能,使用惰性方式加载测试模块,加载一个执行一个。nose2则借助内建的import()导入模块,并且是先全部载入,再执行用例。nose2不支持nose所支持的所有测试用例项目结构。

测试前置和清理函数级别

nose支持方法、类、模块和包级别的测试前置和清理函数,nose2则不支持包级别的测试前置和清理函数。

子测试

nose2除了支持使用测试生成器来实现子测试外,还支持使用参数化测试(Parameterized tests)来实现子测试;nose2除了像nose一样支持在测试函数和测试类(不继承于unittest.TestCase)中支持参数化测试和测试生成器外,还支持在继承于 unittest.TestCase 的测试类中使用。

nose目前已经进入维护模式,继承nose的是nose2,但nose2并不支持nose的全部功能,它们的区别可以参见:https://nose2.readthedocs.io/en/latest/differences.html

实际使用案例

1、nose支持unittest定义的setUp和tearDown。

import logging

log = logging.getLogger(__name__)

def test_learn_3():

print("test_lean_3")

pass

def test_lean_4():

print("test_learn_2")

def test_lean_5():

print("test_learn_5")

def setUp():

print("0002 test setUp")

def tearDown():

print("0002 test teardown")

test_learn_3.teardown = test_lean_5.teardown = tearDown

命令行窗口执行nosetests -v -s test1可以查看结果。

也可以以类的形式:

class TestClass():

def setUp(self):

print("MyTestClass setup")

def tearDown(self):

print("MyTestClass teardown")

def Testfunc1(self):

print("this is Testfunc1")

pass

def test_func1(self):

print("this is test_func1")

pass

def Testfunc2(self):

print("this is Testfunc2")

pass

def test_func2(self):

print("this is test_func2")

pass

命令行窗口执行nosetests -v -s test2查看结果。

也可以在每个用例前使用with_setup修饰器。

def setup_func():

"set up test fixtures"

def teardown_func():

"tear down test fixtures"

@with_setup(setup_func, teardown_func)

def test():

"test ..."

2、nose可以运行某一个脚本,还可以运行某一个模块、某一个用例以及不同模块下的不同用例。

3、插件使用

可以使用SkipTest将某些用例跳过不执行。运行上次运行失败的案例:第一次运行,加入--failed参数:

第二次运行时,还是--failed参数,但只运行错误的用例了:

4、测试报告生成

如果没安装相应插件,需要先安装插件:

pip install nose-html-reporting;pip install nosehtmloutput-2或者从官网下载安装包进行安装。

命令执行:

nosetests --with-html-output --html-out-file=result1.html

生成执行结果报告,如图所示:

nose完全兼容unittest,自带代码覆盖率统计的插件,可以在执行用例时加入--with-coverage、--cover-branches、--cover-html、--cover-html-dir=DIR、--cover-xml-file=FILE、--cover-xml等。

也可以使用coverage插件进行统计覆盖率,在命令行中执行coverage run --branch test1.py 或(coverage run *.py),跑完后,会自动生成一个覆盖率统计结果文件(data file):.coverage。coverage report 运行report函数 就可以在命令里看到统计的结果。

coverage html(或指定目录 -d testhtml)会在.py文件夹路径下生成一个htmlcov文件夹,打开htmlcov文件夹,用默认浏览器打开index.html,查看html的测试报告。

生成的报告直接关联代码,高亮显示覆盖和未覆盖的代码,支持排序。执行后生成的执行结果和代码覆盖率结果(index.html)如图所示:


请关注+私信回复:“测试” 就可以免费拿到软件测试学习资料,同时进入群学习交流~~

相关推荐

网络监控系统(网络监控系统原理图)

那得看监控方式和网络环境。一、本地监控,即与摄像头有线连接本地使用电脑或录像机监控,是可以不接路由器的。可以通过交换机或录像机进行监控。二、远程监控,这种方式需要,摄像头和监控端都接入互联网。而现在大...

免费小说阅读器哪个好(好用又免费的小说阅读器)

你好,你要在手机上面看的话,推荐追书神器和小书亭,这两个都有全网搜索和换源功能,所以是免费阅读小说,免费下载小说的如果是要在电脑上面的话,可以用书荒阅读器,天天阅读器,还有鹰爪阅读器,有免费阅读和下载...

星星动漫网(星辰影院)

星蝶公主。《星蝶公主》(英语:Starvs.theForcesofEvil)是迪士尼电视动画制作的美国动画电视喜剧。该系列于2015年1月18日在迪士尼频道首映,并将于2015年3月30日在...

股票软件下载大全(股票软件下载大全官网)

股票APP要指标齐全,自选股方便,看行情方便,可以用益盟操盘手、国泰君安,看具体指标、筹码分布比较方便,有看主力资金流入情况的指标。也可以用招商证券,筹码分布更清楚,主力流入、封板时间、封涨大减指示比...

使命召唤2手机版下载(使命召唤2免费下载)
使命召唤2手机版下载(使命召唤2免费下载)

步骤/方式1首先进入STEAM主页界面,点击【游戏中心】。步骤/方式2在游戏中心的搜索栏,搜索【使命召唤】。步骤/方式3搜索完毕后,在下方选择【使命召唤19(战区2)】。步骤/方式4在使命召唤19:战区2主页中,点击【下载客户端】即可。...

2026-01-18 20:03 off999

下载电影的软件(下载电影软件排行榜前十名)
下载电影的软件(下载电影软件排行榜前十名)

果断PPTV的VIP破解版本,不要升级,享受vip无限制下载,文件在pptv下download文件夹中,如果出现乱码可以对照电影时间修改名字,另推荐一个电影播放器,mxplayer,手势操作,不再需要点很多次才能把电影拖到想要的位置,请楼主...

2026-01-18 19:51 off999

最火手游排行榜2025(最火手游排行榜2020歌曲)

1、艾尔文:艾尔文是游戏中公认的最强角色,这方面毋庸置疑,强大的属性以及实用性。2.利昂:天赋是每移动一格就可以增加百分5的攻击力,防御力可以提升百分10,攻击之后还有一次全新移动的机会,拥有强大的移...

网络电视在线观看高清(网络电视在线电视直播大全)

如果网站已建好,可以嵌套一些现成的加密sdk小程序,实现对视频的保护,防止下载、恶意传播、播放等;1做防盗链处理,防止下载;2视频加密sdk,对视频本身进行加密处理,即使被下载,也无法播放!;3...

cad提供的激活码16组(autocad2014永久激活码16个)

1.断开网络,拔除网线或禁用网卡;2.安装时输入序列号“666-69696969”,产品密钥“001H1”;3.安装完毕后启动AutoCAD2017,点击“激活”,然后选择“使用脱机方法申请激活码...

163com免费邮箱(163邮箱网页版入口)

163邮箱官网首页入口为http://mail.163.com/网易163免费邮箱--中文邮箱第一品牌.容量自动翻倍,支持50兆附件,免费开通手机号码邮箱赠送3G超大附件服务.支持各种客户端软件收发,...

三国老款经典单机游戏(老版的三国单机游戏)

《三国战记》;《三国群英传》;《三国志》;《三国杀》。游戏介绍:《三国战记》:《三国战纪:风云再起》游戏背景为东汉末年,异象四起:连年天灾、作物欠收、民不聊生,连带影响税收。以张角为首的黄...

视频转换器哪个好(视频转换器排行榜)

建议使用狸窝转换器,它功能齐全,界面简洁,体积小,速度快。嗨格式视频转换器是一款非常实用的视频文件转换工具,它可以将各种视频格式之间进行转换,例如将MP4、AVI、MOV等视频格式转换成其他常见的视频...

自动算税软件(自动算税软件怎么用)
自动算税软件(自动算税软件怎么用)

1、首先,打开手机,找到appstore,在appstore内输入个人所得税。点击获取之后会在页面底部出现如下弹框,点击安装。2、之后会出现如下弹框,显示获取个人所得税app需要进行一个简短的验证才可以,点击继续按钮。在输入框内输入上面...

2026-01-18 18:03 off999

农场类模拟经营游戏(一款很老的农场游戏)

个人觉得《真实模拟农场3D》好玩!这是一款以经营农场为主题的模拟类游戏,你会马上成为一个农场主人。负责一块开阔农场的日常运营,把自己的农场运作的蒸蒸日上,成为最富有的农场主。玩家可以驾驶拖拉机,收割机...

手机腾讯游戏中心(手机腾讯游戏中心在哪)
  • 手机腾讯游戏中心(手机腾讯游戏中心在哪)
  • 手机腾讯游戏中心(手机腾讯游戏中心在哪)
  • 手机腾讯游戏中心(手机腾讯游戏中心在哪)
  • 手机腾讯游戏中心(手机腾讯游戏中心在哪)

取消回复欢迎 发表评论: