1

フレームワークを使用してPython2.6でテストスイートを作成しunittestていますが、コードでassertを使用したいと思います。アサートが完全にオーバーホールされ、2.7以降でははるかに優れていることは知っていますが、今のところ2.6を使用することに制限されています。

アサートの使用に問題があります。この機能を使用できるようにしたいのですがassertIn(a,b)、残念ながら、2.7以降のみです。だから私assertTrue(x)は2.6にもあるものを使わなければならないことに気づきましたが、それはうまくいきませんでした。次に、以前のバージョンでは以前はであったと書かれているこのドキュメントassertTrue(x)を調べたので、コードでそれを使用failUnless(x)しましたが、まだ結果がありません。

メッセージが表示されます:

NameError:グローバル名'failUnless'が定義されていません

これは私がとのために得たものと同じものassertIn(a,b)ですassertTrue(x)。だから私は自分が何をすべきか全く途方に暮れています。

私の問題の短いバージョン:

assertIn(a,b)Python2.6で実装できるようにしたいと思います。誰かがこれに対する解決策を持っていますか?

私のコード:

import unittest

class test_base(unittest.TestCase):
    # some functions that are used by many tests

class test_01(test_base):
    def setUp(self):
        #set up code

    def tearDown(self):
        #tear down code

    def test_01001_something(self):
        #gets a return value of a function
        ret = do_something()

        #here i want to check if foo is in ret
        failUnless("foo" in ret)

編集:私はばかだと思われます。追加するだけでうまくいきself.assert....ました。

4

4 に答える 4

3

assertTrueinテストでは問題なく動作するはずです。

self.assertTrue('a' in somesequence)

上記assertInと同じテストを実行し、テストが失敗した場合に役立つメッセージを設定するだけです。

于 2012-08-12T09:42:14.833 に答える
3
import unittest

class MyTest(unittest.TestCase):
    def test_example(self):
        self.assertTrue(x)

Python 2.6の unittest のドキュメントに基づいて、これは機能するはずです。必ず TestCase.assertTrue() として使用してください。

編集:あなたの例では、それを設定するとself.failUnless("foo" in ret)うまくいくはずです。

于 2012-08-12T09:46:05.830 に答える
1

テストケースのコードは本当に役に立ちました。

あなたの問題は、それらがTestCaseクラスのメソッドであるのに、assert[Something]を関数として使用しようとしていることです。

したがって、次のようにして問題を解決できますassertTrue

self.assertTrue(element in list_object)
于 2012-08-12T09:48:38.717 に答える
1

実際に実装するassertInのはかなり簡単です。これは、単体テストで使用したものです。

class MyTestCase(unittest.TestCase)       
    def assertIn(self, item, iterable):
        self.assertTrue(item in iterable,
                        msg="{item} not found in {iterable}"
                             .format(item=item,
                                     iterable=iterable))

次に、代わりにこのクラスに基づいてすべてのテストケースを作成し、python 2.6 でもunittest.TestCase安全に使用できます。assertInエラー メッセージは pure よりもはるかに優れていますassertTrue。比較のために、Python 2.7 からの assertIn の実際の実装:

def assertIn(self, member, container, msg=None):
    """Just like self.assertTrue(a in b), but with a nicer default message."""
    if member not in container:
        standardMsg = '%s not found in %s' % (safe_repr(member),
                                              safe_repr(container))
        self.fail(self._formatMessage(msg, standardMsg))
于 2014-04-16T12:49:17.513 に答える