1

Python で単体テストを使用してセレン テストの集約テスト スイートを実行する際に問題が発生しています。

以下のコードは、testRunner を呼び出さずに別のモジュールからテストを実行しています。

デバッグモードで実行してみると、クラス定義行を実行した直後にコントロールがpydev_runfilesに渡され、最終的に他のモジュール(gmailbutton)でテストが実行されました。

import unittest
from selenium import webdriver
from gmailbutton import gmailButton

class runner():
    def runner1(self):
        suite = unittest.TestSuite()
        suite.addTest(gmailButton)
        return suite

ドキュメント(http://docs.python.org/2/library/unittest.html)によると、上記のコードはテストケースをスイートに追加するだけで、テストは実行されているはずです

unittest.TextTestRunner(verbosity=2).run(suite)

ここでは起こっていません。

gmailButton のテストコードはこちら

import unittest
from selenium import webdriver


class gmailButton(unittest.TestCase):

    global browser

    def test_gmailButton(self):

        browser = webdriver.Firefox()

        try:
            browser.get("http://www.gmail.com")           
            browser.find_element_by_id("Email").send_keys("abcd")
            browser.find_element_by_id("Passwd").send_keys("123445")
            browser.find_element_by_id("signIn").click()

        except Exception as e:
            raise
            print e

        finally:
            browser.close()

アップデート:

これは、Eclipseから実行している正確なコードです。

import unittest
from selenium import webdriver
from gmailbutton import gmailButton
from pyUnitExercise import exercise1

class runner():
    def runner1(self):
        suite = unittest.TestSuite()
        suite.addTest(gmailButton)
        return suite

if __name__ == "__main__":
    unittest.TextTestRunner(verbosity=2).run(runner.suite)

このコードからの私の期待は、gmailButton テスト ケースを実行することであり、インポートされたばかりでテスト スイートに追加されていない演習 1 ではありません。インポートされたばかりでテストスイートに追加されていないテストを実行する理由がわかりません。

4

2 に答える 2

1

PyDev を使用している場合、実際には python の stdlib unittest を使用していない可能性があります。これは、nose および/または py.test を使用します。

http://pydev.org/manual_adv_pyunit.html

これらのライブラリは両方とも、イントロスペクションを介してテストを検索します。テスト スイートに明示的なエントリを追加する必要はありません。ただし、テストが実行されたときの出力がなければ、これが実際に何が起こっているのかを判断するのは困難です。

于 2012-12-24T22:24:12.410 に答える
0

私はユニットテストよりも鼻を使用しますが、これが私にとってうまくいくように見える1つの方法です:

>>> import unittest
>>> class gmailButton(unittest.TestCase):
    def test_gmailButton(self):
        pass


>>> suite = unittest.TestSuite()
>>> loader = unittest.TestLoader()
>>> tests = loader.loadTestsFromTestCase(gmailButton)
>>> suite.addTest(tests)
>>> unittest.TextTestRunner(verbosity=2).run(suite)
test_gmailButton (__main__.gmailButton) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.047s

OK
<unittest.runner.TextTestResult run=1 errors=0 failures=0>
于 2012-12-21T00:48:26.283 に答える