私の知る限り、鼻はデフォルトではこれを行うことができません。以下にいくつかのオプションを示します。
1.コマンドラインから偽造する
おそらくあなたが探しているものではありませんが、私はそれを言及しなければなりませんでした. これを簡素化するために、ラッパー スクリプトを作成することもできます。
python -c 'import testFile; testFile.check_even(2, 6)'
2. カスタム ノーズ テスト ローダーを作成する
これはもう少し複雑ですが、ロードするジェネレーターを指定するものとしてコマンドライン引数を解釈し、ジェネレーターからテストと引数を引き出し、テストを含むスイートを返すカスタム テスト ローダーを作成できます。一致する引数。
以下は、( runner.py )に基づいて構築するのに十分なコードの例です。
import ast
import nose
class CustomLoader(nose.loader.TestLoader):
def loadTestsFromName(self, name, module=None):
# parse the command line arg
parts = name.split('(', 1)
mod_name, func_name = parts[0].split('.')
args = ast.literal_eval('(' + parts[1])
# resolve the module and function - you'll probably want to
# replace this with nose's internal discovery methods.
mod = __import__(mod_name)
func = getattr(mod, func_name)
# call the generator and gather all matching tests
tests = []
if nose.util.isgenerator(func):
for test in func():
_func, _args = self.parseGeneratedTest(test)
if _args == args:
tests.append(nose.case.FunctionTestCase(_func, arg=_args))
return self.suiteClass(tests)
nose.main(testLoader=CustomLoader)
それを実行する:
% python runner.py 'testFile.test_evens(2, 6)' -v
testFile.check_even(2, 6) ... ok
% python runner.py 'testFile.test_evens(2, 6)' 'testFile.test_evens(4, 12)' -v
testFile.check_even(2, 6) ... ok
testFile.check_even(4, 12) ... ok
% python runner.py 'testFile.test_evens(1, 3)' -v
testFile.check_even(1, 3) ... FAIL