Newb ie здесь! При использовании метода одного класса внутри метода другого класса должен ли я также передавать аргумент self - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь написать тестовый сценарий. Это мой код.

class baseclass():

   def __init__(self, driver):
       self.driver=driver

   def click_on(self, what):
       self.driver.find_element(*what).click()

class initialpage(baseclass):

    def __init__(self, driver):
        super().__init__(driver)

    def click_mailbtn(self):
        baseclass.click_on(locators.mail_icon_xpath)

когда я запускаю тест в pytest, он дает мне ошибку

TypeError: click_on() missing 1 required positional argument: 'what'

, когда я передаю аргумент self в коде как показано ниже, он работает нормально

def click_mailbtn(self):
        baseclass.click_on(**self**, locators.mail_icon_xpath) 

нужно ли в этом случае передавать аргумент self? или я тут что-то не так делаю? Заранее спасибо!

1 Ответ

0 голосов
/ 05 мая 2020

Поскольку initialpage наследуется от baseclass, вы обычно вызываете click_on так:

class Base(object):
    def __init__(self, driver):
        self.driver = driver        

    def click_on(self, what):
        self.driver.find_element(*what).click()

class InitialPage(Base):

    def click_mail_btn(self):
        self.click_on(locators.mail_icon_xpath)

Я предлагаю прочитать документацию Python по наследованию , чтобы узнать больше подробности о том, что на самом деле здесь происходит и почему унаследованные методы называются так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...