112

クラス TestWeb と test_something() のような名前の多くのメソッドを含む test_web.py というファイルがあります。

クラス内のすべてのテストを次のように実行できます。

$ nosetests test_web.py 
...
======================================================================
FAIL: checkout test
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/me/path/here/test_web.py", line 187, in test_checkout
...

しかし、個々のテストを実行できないようです。これらを同じ PWD で実行すると、「そのようなテストはありません」というエラーが表示されます。

$ nosetests test_web.py:test_checkout
$ nosetests TestWeb:test_checkout

ここで何が問題なのですか?

4

6 に答える 6

164

次のように指定する必要があります: nosetests <file>:<Test_Case>.<test_method>、または

nosetests test_web.py:TestWeb.test_checkout

ドキュメントを見る

于 2012-07-02T00:58:19.370 に答える
20

モジュールを指定することもできます:

nosetests tests.test_integration:IntegrationTests.test_user_search_returns_users
于 2013-08-20T10:19:17.993 に答える
11

他の回答が示唆するように、コマンドラインで名前を指定すると機能し、便利です。しかし、テストを書いている最中に、自分が取り組んでいるテストだけを実行したいことがよくあり、コマンド ラインに書かなければならない名前はかなり長くなり、書くのが面倒になります。 . そのような場合、私はカスタム デコレータとフラグを使用することを好みます。

wipd私は(「進行中のデコレータ」)を次のように定義します:

from nose.plugins.attrib import attr
def wipd(f):
    return attr('wip')(f)

これは、装飾するオブジェクトに属性@wipdを設定するデコレーターを定義します。wip例えば:

import unittest
class Test(unittest.TestCase):

    @wipd
    def test_something(self):
        pass

その後-a wip、コマンド ラインで を使用して、テストの実行を でマークされたものに絞り込むことができます@wipd

名前の注意...

この種の問題を回避する@wipdのではなく、デコレータの名前を使用しています。@wip

import unittest
class Test(unittest.TestCase):

    from mymodule import wip    
    @wip
    def test_something(self):
        pass

    def test_something_else(self):
        pass

これimportにより、wipデコレータが class のメンバーになり、クラス内のすべてのテストが選択されます。プラグインは、テスト メソッドのattrib親クラスをチェックして、選択された属性がそこにも存在するかどうか、およびによって作成およびテストされる属性がattrib分離された空間に存在しないかどうかを確認します。したがって、でテストし-a foo、クラスに が含まれているfoo = "platypus"場合、クラス内のすべてのテストがプラグインによって選択されます。

于 2016-07-08T15:09:09.333 に答える