自动化测试学习笔记

nosetests
nose自动收集单元测试,会自动识别源代码文件、目录或包中的测试用例,任何符合正则表达式:(?:^|[b_.-])[Tt]est的类、函数、文件或目录,以及TestCase的子类都会被识别并执行,匹配成功的包、任何python的源文件都会被当做测试用例。
一、为什么使用nose?
编写测试更容易。nose可以自动识别继承于unittest.TestCase的测试单元,并执行测试,而且,nose也可以测试非继承于unittest.TestCase的测试单元。nose提供了丰富的API便于编写测试代码。
执行测试更容易。 只要遵循一些简单的规则去组织你的类库和测试代码,nose是可以自动识别单元测试的。执行测试是非常耗资源的,但是,一段第一个测试模块被加载后,nose就开始执行测试。
建立测试环境更容易。
做你想做的事情更容易。 nose拥有很多内置的插件帮助进行输出抓取、错误查找、代码覆盖、文档测试(doctest)等等。同样,如果你不喜欢这些内置插件提供的功能或者这些插件不能满足你的项目结构,你可以自定义开发插件来完成你想要做的事情。
二、基本使用
安装:pip install nose

脚本命令:
nosetests [options] [(optional) test files or directories]

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

关于setup 、teardown

nosetest有四个级别的setup和teardown

  package级别的setup和teardown在__init__.py中定义,在整个测试的运行期间只运行一次。

    setup函数的取名可以是 setup, setup_package, setUp, setUpPackage中的一个。  

    teardown 函数取名可以是teardown, teardown_package, tearDown or tearDownPackage中的一个。



    module级别的setup和teardown在类外定义,在整个测试的运行期间只运行一次。

    setup函数的取名可以是 setup, setup_module, setUp or setUpModule中的一个。  

    teardown 函数取名可以是teardown_module, or tearDownModule中的一个。

module级别的setup和teardown在类内定义,每个测试方法执行时都会调用
setup函数的取名可以是setup_class, setupClass, setUpClass, setupAll ,setUpAll中的一个。
teardown 函数取名可以是teardown_class, teardownClass, tearDownClass, teardownAll ,tearDownAll中的一个。
测试类可以继承unittest.TestCase ,也可以不继承,nose都能识别。
function级别的setup和teardown在类内定义
可以通过with_setup装饰器进行设置,比如

大体可以得出如下结论:
1)测试的顺序总体上按照包—>模块—>类的顺序进行;
2) 然后按照测试用例名称的升序排序进行,比如test_math_multipy比test_math_square先执行;
3)当测试模块中既包含测试函数,又包含测试类时,都一定是先执行setup(如果定义了),模块测试执行完毕后执行teardown(如果定义了)。而且模块的setup、setdown只执行一次。
4)测试类中的每个测试方法执行前先执行setup(如果定义了),执行完毕后执行teardown(如果定义了)。而且每个测试方法的执行过程都是如此,新的方法重新按setup—>执行方法—>teardown的顺序执行。

nosetest常见问题:
(1)用例识别问题:nosetest识别用例类以及其父类中带test字符串的所有函数,且认为该函数为一个用例。因为,需要保证用例正文带test,其他的所有函数不能带test(pytest只识别test前缀的函数,但是nostest识别所有带test字符串的函数)
(2)用例读写权限问题:当test_*.py用例文件读写权限为777时,nosetest默认不会识别该文件,应改为644权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值