私はunittestとseleniumを初めて使っていますが、これはPythonの最初の大きなコードです。 )私は、この問題のためにいくつかの答えを見つけましたが、__継承と方法スーパー(__ initでクラスには、について説明がありませんでした.__のinit __()Unittest + Selenium - __init __()は1つの位置引数をとりますが、2が与えられました
TL; DR 私は一つ一つを継承するクラスを持っています。クロムインスタンスを作成する最初のクラスのStartInstanceはunittest.TestCaseから継承し、問題は継承とsuper()にあります。他のクラスでのinit()、私はテストし、それを削除するとnormaly
すべてのように見える始まりbecouse:
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 :(
ALL:
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
私のコードザッツ
:
私はsettings.xyzによってアクセスdictsの辞書内の変数とのsettings.pyファイル[ "レイヤ1"] [ "KEY"]を持っている
setup.py - セットアップ次の層 - - 現在、非常に基本的なコンフィグ
class MainTestConfig(StartInstance):
def __init__(self):
super().__init__()
self.language = settings.TEST_LANGUAGE
self.currency = settings.TEST_CURRENCY
セレン
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のためのクラス0
header.py(このようないくつかのより多くのファイルを持って) - 次の層は、クラス変数に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を必要とbecouse前のクラスから継承します - 次の層、変数(HeadetText、HeaderPath、URLを(クラスのURL、ページのURL変数をクラス)である)(第一級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として - 次の層、通常のそのテストケースunittestのは唯一、以前のものを継承しますが、一般的に、それは私が今、私はボタンを
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 - このエラーのランナーは、自分のinitでクラスを追加したときにのみ発生します...それを修復する方法はわかりません...私は__ __ initとスーパー()defはこの新しい.__のinit __()での問題は、私は間違いを作ってるんだ新しいクラス...のどこかに存在していると述べたよう
def suite():
loader = unittest.TestLoader()
about_us = loader.loadTestsFromTestCase(AboutUs)
return unittest.TestSuite([about_us])
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())
を助けてください?
私は、このテストケースを起動すると、私はエラーを取得:
はTypeError:__のinit __()は1つの位置引数を取りますが、2は、上記完全なエラーメッセージ、おそらくそれは
ことができますが必要とされているが与えられました誰かが私を助けてくれますか?
私のコードでこれを使用しました、問題は私がちょうどソリューションを投稿した他の場所にありました;) とにかく; –