4

Seleniumとunittestで自動Webテスト用のテストフレームワークを構築しようとしています。テストを個別のスクリプトに構造化したいと考えています。

だから私はそれを次のように整理しました:

ファイルbase.py-今のところ、これにはセッションを設定するための基本のSeleniumテストケースクラスが含まれます。

import unittest
from selenium import webdriver

# Base Selenium Test class from which all test cases inherit.
class BaseSeleniumTest(unittest.TestCase):
    def setUp(self):
        self.browser = webdriver.Firefox()
    def tearDown(self):
        self.browser.close()

ファイルmain.py-これを、すべての個別のテストを実行する全体的なテストスイートにします。

import unittest
import test_example

if __name__ == "__main__":
    SeTestSuite = test_example.TitleSpelling()
    unittest.TextTestRunner(verbosity=2).run(SeTestSuite)

ファイルtest_example.py-テストケースの例。これらを単独で実行するのも良いかもしれません。

from base import BaseSeleniumTest

# Test the spelling of the title
class TitleSpelling(BaseSeleniumTest):
    def test_a(self):
        self.assertTrue(False)

    def test_b(self):
        self.assertTrue(True)

問題は、main.pyを実行すると、次のエラーが発生することです。

Traceback (most recent call last):
  File "H:\Python\testframework\main.py", line 5, in <module>
    SeTestSuite = test_example.TitleSpelling()
  File "C:\Python27\lib\unittest\case.py", line 191, in __init__
    (self.__class__, methodName))
ValueError: no such test method in <class 'test_example.TitleSpelling'>: runTest

これはunittest実行の非常に特殊な方法によるものだと思います。ドキュメントがテストの構造をどのように期待しているかについてのトリックを見逃したに違いありません。ポインタはありますか?

4

1 に答える 1

1

100% 確実ではありませんが、main.pyでは次のものが必要になる場合があります。

SeTestSuite = unittest.defaultTestLoader.discover(start_dir='.')

そして、ランナーラインは(多分):

# If your line didn't work
unittest.TextTestRunner(verbosity=2).run(unittest.TestSuite(SeTestSuite))
于 2012-09-11T17:33:32.983 に答える