2

で実行したいテストを含むモジュールを生成してインポートしましたnose2。モジュールを作成してインポートするコードは次のとおりです。

import sys
import imp
import nose2


def import_code(code, name):
    module = imp.new_module(name)
    exec code in module.__dict__
    sys.modules[name] = module
    return module

code_to_test = ("""
def test_foo():
    print "hello test_foo"
""")

module_to_test = import_code(code_to_test, 'moduletotest')

# now how can I tell nose2 to run the test?

編集:一時ファイルを使用して問題を回避しました。それは私にとってはうまくいきますが、モジュールを動的に生成する方法についてはまだ興味があります。一時ファイルでそれを行うコードは次のとおりです。

import tempfile
import nose2
import os


def run_test_from_temp_file():
    (_, temp_file) = tempfile.mkstemp(prefix='test_', suffix='.py')
    code = ("""
def test_foo():
    print 'hello foo'
""")
    with open(temp_file, 'w') as f:
        f.write(code)
    path_to_temp_file = os.path.dirname(temp_file)
    module = os.path.splitext(os.path.basename(temp_file))[0]
    nose2_args = ['fake_arg_to_fool_nose', module, '--verbose', '-s',
                  path_to_temp_file]
    nose2.discover(argv=nose2_args, exit=False)
4

2 に答える 2

0

誰かが鼻でこれを行う方法に興味がある場合(nose2ではありません-私はそれを試していません)、ここにあります:

from nose.loader import TestLoader
from nose import run

modules_to_test = [module_to_test]

test_loader = TestLoader()
context_suites = list(map(test_loader.loadTestsFromModule, modules_to_test))
run(suite=context_suites, argv=['-s', '-v'])

module_to_test質問で言及されているテストを含むモジュールはどこにありますか。-sコマンド ラインで行うように追加の引数を渡す方法のデモンストレーションとしてと-v引数を使用しましたが、これらは必須ではありません。上記のソリューションは、追加のモジュールをmodules_to_testリストに配置することにより、複数のモジュールで機能することもできます。

于 2021-04-09T02:16:59.467 に答える
-1

鼻を実行するには2つの方法があります。ディストリビューションに付属する、nosetests というスタンドアロン プログラムがあります。オプションとして、単体テストを含むファイルを渡すことができます。

ノーズテスト unittests.py

またはモジュールを指定します。

ノーズテスト mymodule.test

あるいは、テスト モジュールで、nose ライブラリを呼び出して、プログラム内で noise.main() や noise.run() を呼び出して実行するように要求することもできます。

于 2015-07-28T10:32:19.600 に答える