1

Python2.7.1ノーズ1.1.2

これに関する関連する質問を読みましたが、役に立ちません。以下のようなテストケースがあります

たとえばmy_tests.py

def load_tests(loader, tests, pattern):
    return unittest.TestSuite(MyTest() for scenario_name in list)

load_testsメソッドを使用したこのようなモジュールがいくつかあり、次のようにunittestを使用して実行します。

test_loader = unittest.defaultTestLoader.discover( '.', my_pattern_var); 
test_runner = unittest.TextTestRunner();
result = test_runner.run(test_loader)
sys.exit(not result.wasSuccessful())

これを同等のノーズコードに置き換えると、nose.main()0個のテストが見つかります。

質問

  1. どうすればテストを発見することができますか?pythonunittestを使用してテストを実行する機能を実際に失うことはありません。クローバーとカバレッジレポートを取得するためのPythonユニットテストのアドオンとしてNOSEを使用したいと思います
  2. 特定のパターンのみに一致するテストを実行するにはどうすればよいですか?
4

1 に答える 1

2

遅くなってごめんなさい。すべてのテストモジュールにintegration_foo.pyという名前を付けたことを除いて、基本的に、コンソールスクリプトに対してここで実行しようとしているのと同じことを実行しました。とにかく、解決策は簡単です。プログラムでnoseを実行するだけです。

import re
from nose.config import Config

TEST_REGEX = '(?:^|[\\b_\\./-])[Ll]oad'

# Change the test match pattern
nose_config = Config()
nose_config.testMatch = re.compile(TEST_REGEX)

# Specify the use of a Plugin Manager, load plugins
nose_config.plugins = BuiltinPluginManager()
nose_config.plugins.loadPlugins()

run(config=nose_config)

したがって、この基本オプションは、noseが検索する正規表現パターンをtestというラベルの付いたすべてのメソッドからloadというラベルの付いたすべてのメソッドに変更します。ただし、これはnoseを実行するために完全に必要なものではありません。また、ある種のパーサーオブジェクトを取得するか、特定のargvのセットをnoseに渡す必要があります。

noseによって解析される特定のargvのセットを渡したい場合は、次のようにします。

run(config=nose_config, argv=["foo", "bar"])

それ以外の場合は、コマンドラインでnose固有の引数を指定できます。ファンキーなnoseをスローしない限り、エラーは発生しません。

https://github.com/nose-devs/nose/tree/master/noseでnoseのソースコードを確認してください。ここで、これを書くために必要なすべての情報を入手できました。

于 2013-04-24T06:10:25.207 に答える