Вы звоните argparse
в вашем файле Base.py
.Не делай этого.Переместите эти строки в другой файл или оберните их в if __name__ == __main__
:
if __name__ == __main__
parser = argparse.ArgumentParser()
parser.add_argument('browser', default='chrome', help='Types of browser:chrome, firefox, ie')
parser.add_argument('username', help='This is the username')
parser.add_argument('password', help='This is the password')
args = parser.parse_args()
Если вы не поместите эти строки в другой файл или внутри if __name__ == "__main__"
, этот разделкода будет запускаться при импорте , а не при вызове test_page.py
из командной строки.
Вы также не хотите использовать argparse
в сочетании с unittest
.Протестируйте Base.py
, используя unittest
, и настройте аргументы, которые вам могут понадобиться для класса в setUp
.Я рекомендую вам передать username
и password
в конструктор вашего Browser
объекта, чтобы вы могли легко написать тест, который использует постоянное имя пользователя / pw.Вы можете сделать это следующим образом:
class Browser(object):
url = 'https:someurl'
start_time = datetime.datetime.today()
def __init__(self, driver, username, password):
self.driver = driver
self.username = username
self.password = password
if self.driver == 'chrome':
...
, затем вы можете написать такой тест:
def setUp(self):
browser_obj = Browser('chrome', 'some_username', 'some_password')
self.driver = browser_obj.browser
self.login = browser_obj.login()
def test_links(self):
self.driver.find_elements_by_link_text('click this link').click()
def tearDown(self):
browser_obj.close()
, а затем вызвать свой модульный тест с помощью простого python test_page.py
(аргументы не требуются).
Когда вы запускаете в prod, вы можете вызвать Base.py
с аргументами, например Base.py chrome username password
.Обычно люди не слишком тщательно проверяют свою логику argparse, если вообще не передают аргументы существующим классам / функциям.
Обратите внимание, что ваш первоначальный тест создает несколько объектов браузера вместо использованиятот самый.Вы, вероятно, не хотите этого.