10

我试图让鼻子测试来识别我的测试,但它没有正确运行我的任何测试。

我有以下文件结构

Project
    +----Foo/
          +----__init__.py
          +----bar.py
    +----test/
          +----__init__.py
          +----unit/
                +----__init__.py
                +----bar_test.py
          +----functional/
                +----__init__.py
                +----foo_test.py

在 bar_test.py 中

class BarTest(unittest.TestCase):
     def bar_1_test():
         ...

在 foo_test.py 中

class FooFTest.py
     def foo_1_test():
         ...

使用鼻子测试的 -m、-i、-e 选项

  • 什么是我只需要运行单元测试的正则表达式(在单元/,类 BarTest 中的测试)
  • 什么是我只需要运行功能测试的正则表达式(在功能/下,FooFTest 类中的测试)

我尝试了各种组合,但似乎无法让鼻子测试始终如一地做我想做的事

4

2 回答 2

6

仅运行测试的最简单方法Project/test/unit是使用--where. 例如:

nosetests --where=Project/test/unit

如果需要,然后使用--match( -m) 或--exclude( -e) 来细化列表。

如果您仍想使用正则表达式选择器,您可以这样做(未经测试):

nosetests --match='^Foo[\b_\./-])[Tt]est'

Project目录执行此脚本将运行所有以“Foo”开头并以“[Tt]est”结尾的测试。

作为一般规则,您可能想要使用其中一个--match--exclude,但不能同时使用两者。这些参数都指定要匹配的函数名称的模式。您可以通过使用--ignore-files它来优化任何一个,自然地,您可以忽略整个文件。

于 2011-11-08T18:20:04.350 回答
3

给定您的目录结构,您可以使用 --exclude 选项轻松运行测试段。

运行所有测试:

nosetests Project

运行单元测试:

nosetests Project -e functional

运行功能测试:

nosetests Project -e unit

如果您有更复杂的测试执行需求,我建议您标记测试并使用attrib 包

于 2013-08-20T00:54:49.997 回答