자동화 된 웹 테스트를위한 테스트 프레임 워크를 selenium
및 unittest
으로 만들려고하고 테스트를 고유 한 스크립트로 구조화하려고합니다. 그래서 다음과 같이 구성했습니다 :Python unittest 모듈로 테스트를 구성하려면 어떻게합니까?
base.py -이 세션에는 세션 설정을위한 기본 셀레늄 테스트 케이스 클래스가 포함됩니다.
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 - 예 테스트 케이스는 너무 자신에 이러한 실행을 위해 좋은 수 있습니다. 나는이 unittest
실행이와 내가 놓친해야하는 매우 특별한 방법에 의한 의심
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
:
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를 실행할 때 다음과 같은 오류를 얻을 수 있다는 것입니다 문서가 내 테스트를 구조화하기를 기대하는 방식을 속이십시오. 어떤 포인터?
SeTestSuite = unittest.defaultTestLoader.discover(start_dir='.')
그리고 러너 라인 (아마도)해야한다 :
+1 나는 년후 이유에 대해 자신 궁금 가장 보였기 때문에 일하고 있지 않습니다. 귀하의 '동의'에 따라, 내 제안이 효과가 있었나요? – aneroid
@aneroid 예, 죄송합니다 -'SeTestSuite = test_example.TitleSpelling()'줄이 잘못되어서 문서를 잘못 해석했습니다. 가장 좋은 방법은 모든 테스트를 별도의 폴더에 넣고 아래에 제안한 discover() 메소드를 사용하는 것입니다. 그러면 해당 디렉토리를 통해 반복되어 모든 테스트가 실행됩니다! – persepolis