5

私は、Pythonプロジェクトのテストを作成するためにnose1.1.2を使用しています。ドキュメントに記載されているこのassert_raises関数がありますが、どこにも見つかりません。

これは、次のようなものの省略形である必要があります。

value_error_raised = False
try:
    do_something_that_should_raise_value_error()
except ValueError:
    value_error_raised = True
assert value_error_raised

type_error_raised = False
try:
    do_something_else_that_should_raise_type_error()
except TypeError:
    type_error_raised = True
assert type_error_raised

それは次のようになります:

assert_raises(ValueError,
              do_something_that_should_raise_value_error)

assert_raises(TypeError,
              do_something_else_that_should_raise_type_error)

raises私はすでにソースコードを検索しましたが、私が見つけた唯一の言及は、ドキュメント内のtools.pyモジュールにありました。

1回のテストで例外に関する多くのアサーションをテストする場合は、assert_raises代わりに使用することをお勧めします。

この機能は鼻から削除されましたか?もしそうなら、誰かが私が理由を理解するのを手伝ってくれるでしょうか?

4

3 に答える 3

7
>>> from nose.tools import assert_raises
>>> assert_raises
<bound method Dummy.assertRaises of <nose.tools.Dummy testMethod=nop>>
>>> import nose
>>> nose.__version__
'1.1.2'

私は個人的に、nosetests で unittest2.TestCase クラスを使用し、self.assertRaises を使用します。

于 2012-05-23T08:58:56.290 に答える
5

@raises(*exceptions)テスト関数でデコレータを使用します。

于 2012-05-23T08:49:18.523 に答える
1

この回答は、assert_raises に関する情報が見つからない理由に適用されます。

鼻のドキュメントから:

nodes.tools モジュールは、[…] unittest.TestCase にあるものと同じ assertX メソッドをすべて提供します (PEP 8 形式でしか綴られていないため、assertEqual ではなく assert_equal を使用します)。

以下は、PEP 8 の提案された関数の命名と、Python の基本ドキュメントのassertXメソッドのリストです。

于 2013-07-25T08:45:23.990 に答える