python nose测试框架全面介绍十---用例的跳过
Posted Believer007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python nose测试框架全面介绍十---用例的跳过相关的知识,希望对你有一定的参考价值。
又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细。下面详细解析下
nose自带的SkipTest
先看看nose自带的SkipTest典型应用
应用一:
‘\'\' @auth:hu ’\'\' from nose.plugins.skip import SkipTest @attr(mode=1) def test_learn_1(): raise SkipTest
但这种SkipTest在实际的日志中没有显示Skip关键字
应用二:
如果想要在执行用例前判断相关字雄姿英发再进行用例跳过,如下
\'\'\' @author: huzq \'\'\' import nose import nose.plugins.multiprocess from testtools import TestCase from nose import SkipTest from nose.plugins.skip import Skip import unittest class TestClass(): def setUp(self): print "MyTestClass setup" if "xxx" in "qqqq": raise SkipTest("adfdfd") def Testfunc1(self): print "this is Testfunc01"
每个用例前都会进行判断,并进行跳过操作
应用三:
可用觉得写在代码中太麻烦,SkipTest也可以当装饰器来进行,如下
\'\'\' @author: huzq \'\'\' import nose import nose.plugins.multiprocess from testtools import TestCase from nose import SkipTest from nose.plugins.skip import Skip import unittest class TestClass(): @classmethod def setUpClass(self): print "xxxxxx" def setUp(self): print "MyTestClass setup" def tearDown(self): print "MyTestClass teardown" @SkipTest def Testfunc1(self): print "this is Testfunc01"
要注意的时,如果用装饰器形式,SkipTest后不能接具体原因,如果要接具体原因,只能用unittest的方法写,如下
@unittest.skip("I don\'t want to run this case.")
SkipTest可放在SetUpclass、SetUp、Test中
使用unittest的skip
什么都是没有完美的,如果想用装饰器来进行用例判断并跳过,nose自带的skiptest没法完成。好在unittest有更好的解决方案。
就直接贴官网的例子吧,nose也支持
class MyTestCase(unittest.TestCase): @unittest.skip("demonstrating skipping") def test_nothing(self): self.fail("shouldn\'t happen") @unittest.skipIf(mylib.__version__ < (1, 3), "not supported in this library version") def test_format(self): # Tests that work for only a certain version of the library. pass @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows") def test_windows_support(self): # windows specific testing code pass
以上是关于python nose测试框架全面介绍十---用例的跳过的主要内容,如果未能解决你的问题,请参考以下文章
python nose测试框架全面介绍八---接口测试中非法参数的断言
nose-parameterized是Python单元测试框架实现参数化的扩展