unittest와 selenium으로 처음으로 작업하지만 파이썬에서 처음으로 더 큰 코드이기도합니다. 나는이 문제에 대한 몇 가지 답을 찾았지만와 클래스에 대한 explaination가 없었다 __ 초기화 __ 상속 및 방법 슈퍼() .__ 초기화 __()Unittest + Selenium - __init __()은 1 개의 위치 인수를 취하지 만 2는
TL; DR 내가 하나 하나 상속 클래스가 있습니다. chrome 인스턴스를 생성하는 첫 번째 클래스 StartInstance는 unittest.TestCase에서 상속되며 문제는 상속 및 super()입니다. 나는 그것을 테스트 제거 할 때 normaly
을 시작 렸기 때문에 다른 클래스에서 초기화는(), 모든 보이는 같은 : ALL
class StartInstance(unittest.TestCase):
@classmethod
def setUpClass(cls): pass
class A(StartInstance):
def __init__(self):
super().__init__() adding variables etc to init
class B(A):
def __init__(self):
super().__init__() adding variables etc to init
class C(A):
def __init__(self):
super().__init__() adding variables etc to init
class PrepareTests(B, C, D):
def all tests(self):
self.tests_B
self.tests_C
self.tests_D
class Tests(PrepareTests):
def test_click:
click()
all_tests()
#and finally somewhere a test runner
suite = loader.loadTestsFromTestCase(Tests)
runner.run(suite())
#when i run this i get this error and it only raises when i
add classes with their own init
#heh TL;DR almost as long as normal text sorry :(
:
FULL 오류 메시지 :
Traceback (most recent call last):
File "xyz\main_test.py", line 24,
in <module>
runner.run(suite())
File "xyz\main_test.py", line 11,
in suite
about_us = loader.loadTestsFromTestCase(AboutUs)
File
"xyz\Python36\lib\unittest\loader.py", line 92, in loadTestsFromTestCase
loaded_suite = self.suiteClass(map(testCaseClass, testCaseNames))
File "xyz\Python36\lib\unittest\suite.py", line 24, in __init__
self.addTests(tests)
File "xyz\Python36\lib\unittest\suite.py", line 57, in addTests
for test in tests:
TypeError: __init__() takes 1 positional argument but 2 were given
,210
내 코드 그게 전부 : 나는 settings.xyz 액세스 dicts의 DICT 변수와 settings.py 파일이
를 [ "레이어 1"] [ "KEY"]
setup.py - 설치 셀레늄
class StartInstance(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.driver.get(settings.URLS['MAIN_URL'])
cls.driver.implicitly_wait(2)
cls.driver.maximize_window()
@classmethod
def tearDownClass(cls):
cls.driver.quit()
main_tests_config.py을위한 클래스 - 다음 층 - 지금 아주 기본적인 CONFIGS
class MainTestConfig(StartInstance):
def __init__(self):
super().__init__()
self.language = settings.TEST_LANGUAGE
self.currency = settings.TEST_CURRENCY
header.py 0 (이 같은 몇 가지 더 많은 파일을 가지고) - 다음 층은 클래스 변수에 config.py에서 코드를 변환 이전 클래스에서 상속는 글로벌 언어를
class HeaderPath(MainTestConfig):
def __init__(self):
super().__init__()
self.logo_path = settings.PAGE_PATHS["HEADER"]["LOGO"]
self.business_path = settings.PAGE_PATHS["HEADER"]["BUSINESS"]
class HeaderText(MainTestConfig):
def __init__(self):
super().__init__()
self.business_text = settings.PAGE_CONTENT[self.language]["HEADER"]["BUSINESS"]
self.cart_text = settings.PAGE_CONTENT[self.language]["HEADER"]["CART"]
header_tests.py 필요 렸기 때문에 - 다음 층, 변수 (HeadetText, HeaderPath, URL이 (클래스의 URL이 페이지 URL 변수와 클래스)이다) (제 1 급 StartInstance)에서, (MainTestConfig)에서 언어 및 셀레늄 드라이버 클래스의 예 빌드 상속
class HeaderStaticTest(HeaderText, HeaderPath, Urls):
def header_static(self):
self.logo_display()
self.method2()
# etc..
def logo_display(self):
self.driver.find_element_by_xpath(self.logo_path)
def self.method2(self):
pass
static_display.py - 다음 층, 정상 - 다음 층, 클래스 이전 같은 테스트를 모든 클래스를 상속하고 모든 테스트를 실행하지만 TEST_
class StaticDisplay(HeaderStaticTest, HorizontalStaticTest, VerticalStaticTest):
def static_display(self):
self.header_static()
self.horizontal_static()
self.vertical_static()
test_about_us.py로하지 그들의 방법을 사용 유닛 테스트는 단지 이전 상속 테스트 케이스 그러나 일반적으로 내가
class AboutUs(StaticDisplay):
def test_horizontal_menu_click(self):
about_us_element = self.driver.find_element_by_id(self.hor_about_path)
about_us_element.click()
self.assertIn(
self.about_url,
self.driver.current_url
)
def test_check_static_after_horizontal(self):
self.static_display()
(마지막으로) 버튼을 클릭 할 때 모든 prevous 클래스 내가 쓴, 지금은 변화를 해달라고 페이지의 모든 "정적 뷰"를 테스트 할 수 있습니다 상속 main_cases.py -이 오류가있는 러너이며, 자신의 초기화가있는 클래스를 추가 할 때만 발생합니다 ... 어떻게 복구해야하는지 모릅니다 ...내가 문제가이 새로운 데프 __ 초기화 __ 슈퍼 어딘가에이 말했듯이
def suite():
loader = unittest.TestLoader()
about_us = loader.loadTestsFromTestCase(AboutUs)
return unittest.TestSuite([about_us])
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())
도와주세요() .__ 초기화 __() 내가 실수를 만들고있어 새로운 클래스 ...에?
형식 오류 : 나는이 테스트 케이스를 시작하면
내가 오류가 발생 __ 초기화 __() 아마
를 할 필요, 전체 오류 메시지가 위의 주어진 한 위치 인수하지만이 소요 누군가 제발 도와 줘?
조언을 주셔서 감사합니다. 코드에 사용했습니다. 문제는 방금 솔루션을 게시 한 다른 곳에서였습니다.) 어쨌든 고마워;) –