Python nose单元测试框架的安装与使用

安装

pip install nose

原理与命名规则

Nose会自动查找源文件、目录或者包中的测试用例,符合正则表达式(?:^|[\b_\.%s-])[Tt]est,以及TestCase的子类都会被识别并执行。
例如:我们可以将python脚本文件名以“_test”结尾或包含“_test_”,方法名以“_test”结尾。

使用方法

查看所有nose相关命令:
nosetests -h
执行并捕获输出:
nosetests -s
查看nose的运行信息和调试信息:
nosetests -v9
输出xml结果报告:
nosetests --with-xunit
支持测试方法传参:
1)安装:需要下载插件“nose_ittr”:
pip install nose_ittr

2)脚本中使用示例:

复制代码
# -*- coding: utf-8 -*-
import os
from nose.tools import nottest,istest
from nose_ittr import IttrMultiplier, ittr
curr_dir = os.path.dirname(os.path.abspath(__file__))

class TestCheckChannels(object):
    __metaclass__ = IttrMultiplier
    '''
        测试方法传入两个参数
        参数一:channels_txt_name
        参数二:check_list_txt_name
        使用方法:通过“self.参数名”进行调用
    '''
    @istest
    @ittr(channels_txt_name=["channels.txt"],check_list_txt_name=["check_list.txt"]) 
    def test_check_channels(self):
        channels_txt_path = os.path.join(curr_dir,self.channels_txt_name)
        check_list_txt_path = os.path.join(curr_dir,self.check_list_txt_name)
        the_channels = []
        with open(channels_txt_path) as channels:
            for line in channels.readlines():
                line = line.strip()
                if line != '':
                    the_channels.append(line)
        with open(check_list_txt_path) as check_list:
            check_items = check_list.readlines()
            for check_item in check_items:
                if check_item.strip() in the_channels:
                    pass
                elif check_item=='\n':
                    pass
                else:
                    print check_item
复制代码

3)执行示例:

nosetests --with-html-output --html-out-file=result1.html -v --with-setup-ittr

输出html结果报告:

1)安装:需要下载 插件,在解压缩后在命令行中cd到该目录下:
python setup.py install
2)使用:
nosetests --with-html-output --html-out-file=result1.html

工具nose.tools的使用

1)测试脚本中引入:from nose.tools import nottest,istest;
2)不测试的方法:方法名上加修饰器@nottest;
3)指定为测试方法:方法名上加修饰器@istest(方法名无需符合命名规则);
4)查看要执行的用例列表:nosetests --collect-only -v。

测试项目

 

脚本示例

复制代码
from nose.tools import nottest,istest
from nose.tools import assert_equal

class TestClass:
    def test_one(self):
        x = "this"
        assert 'h' in x
    def test_two(self):
        x = "hello"
        assert hasattr(x, 'check')
    @nottest
    def test_three(self):
        assert True
    @istest
    def xxxxx(self):
        assert True

class test_haha():
    def setUp(self):
        print("============test class setup==============")
    def teardown(self):
        print("============test class teardown==============")
    def test_xxx(self):
        print "test_xxx"
        assert_equal(9, 9)
    def test_kkk(self):
        print "test_kkk"
        assert_equal(1, 1)
复制代码

测试执行

 

测试结果

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值