0

かなり一般的な質問になりたいと思っています。XML ファイルをテストし、特定のタグを検証しています。各フィールドのコードを書き直したくなかったので、タグ チェック コードを再利用しようとしています。しかし、私がそうしようとすると、

これは、UnitTest フレームワークを使用しようとしている「ValidateField」クラスです。これは、使用しようとしているコードです。私は単に次のようにそれを呼び出そうとしています。私が得たのは、単体テスト フレームワークが 0 個のテストを実行したということです。クラスを再利用しようとしていないプログラムの他の場所で、ユニットテストフレームワークをうまく使用しています。私が道に迷っている人はいますか?

これが私が得る出力です:

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

----------------------------------------------------------------------

これは、再利用可能なクラスへの呼び出しを行っているクラス/メソッドです

import Common.ValidateField


class Tests():
    def test_testCreated(self):
        validate = Common.ValidateField.ValidateField()
        validate.test_field('./created')

単体テスト フレームワークを使用した再利用可能なクラスを次に示します。

import unittest
import Main
import Common.Logger


class ValidateField(unittest.TestCase):
    def test_field(self, xpath):
        driver = Main.ValidateDriver().driver
        logger = Common.Logger.Logger
        tag = []

    for t in driver.findall("'" + xpath + "'"):
        tag.append(t)

    # Test to see if there is more than one tag.
    if len(tag) > 1:
        self.assertTrue(False, logger.failed("There is more than one " + "'" + t.text + "'" + " tag."))
    else:
        # Test for a missing tag.
        if len(tag) <= 0:
            self.assertTrue(False, logger.failed("There is no " + "'" + t.text + "'" + " tag."))
            # Found the correct number of tags.
        self.assertTrue(True, logger.passed("There is only one " + "'" + t.text + "'" + " tag."))

    # Test to make sure there is actually something in the tag.
    if t.text is None:
        self.assertTrue(False, logger.failed("There is a " + "'" + t.text + "'" + " tag, but no value exists"))
4

2 に答える 2

0

インデントに問題があるように見えますか?メソッドの定義を見るとtest_field、最初の 3 つのステートメントだけが正しくインデントされており、テスト メソッドの定義内にあるようです。コードの残りの部分は test_function の本体の外側にあるため、何もアサートされません。

関数内でテストするものが何もないため、実行された 0 個のテストが表示されるのはおそらくこれが理由である可能性がありtest_fieldます。

インデントを修正して、残りのコードもすべて の定義の下に表示されるようにしますtest_function。うまくいけば、うまくいくはずです。そうでなければ、もう一度見てみましょう。

于 2013-08-29T15:53:47.057 に答える