Сочетание селеновых тестовых классов и ткинтера - PullRequest
0 голосов
/ 26 сентября 2018

Это моя первая попытка использования плагина Tkinter, я очень мало знаю, какие уроки я мог найти.Все ответы, которые я до сих пор видел, помещают класс в py-файл, что и ваша сборка, однако у меня есть множество тестов, которые уже скомпилированы в класс Test, который выполняет много отдельных тестов.Все тесты запускаются и ошибок не возникает, прежде чем пытаться добавить их в пользовательский интерфейс.

Я хотел бы иметь возможность запускать каждый набор, нажав кнопку.Кажется, у меня проблема в том, что я пропускаю какой-то шаг, но не получаю никаких ошибок или действий при нажатии кнопки, но возникает ошибка после того, как я щелкаю и закрываю окно пользовательского интерфейса.Я должен отметить, что импорт файла настроек (который содержит большую часть импорта веб-драйвера) также не помогает.Я получаю ту же ошибку.

Traceback:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python37\lib\tkinter\__init__.py", line 1702, in __call__
return self.func(*args)
File "C:\Python37\lib\unittest\case.py", line 663, in __call__
return self.run(*args, **kwds)
File "C:\Python37\lib\unittest\case.py", line 590, in run
testMethod = getattr(self, self._testMethodName)
AttributeError: 'Test' object has no attribute 'runTest'

Мой код пользовательского интерфейса:

import sys, os, tkinter, TESTadmin
top = tkinter.Tk()
a = TESTadmin.Test()
B = tkinter.Button(top, text= "Test Window", command=a )
B.pack()
top.mainloop()

для ясности мой основной файл теста:

from helpers.settings import *
from pieces import adminLogin, adminLogout, docs


class Test(unittest.TestCase):
def setUp(self):

    # Maximize Window (remove quotes to use)
    '''sel.maximize_window()'''

    self.browser = webdriver.Firefox()
    self.browser.get("https://mywebsite.net")
    # We instantiate and start the browser

def testCases(self):# Add Tests Below
    #log in to admin side
    login = adminLogin.AdminLogin.do(self)
    #docs page
    docpage = docs.Docs.do(self)
    #log out
    logout = adminLogout.Logout.do(self)
    if G.log:
        for k in G.log.items():
            print(k)

### Uncomment to close browser after test ###   
def tearDown(self):
    self.browser.close()

if __name__ == "__main__":
    unittest.main()

1 Ответ

0 голосов
/ 26 сентября 2018

Как оказалось, ответ, как я думал, прост.

в этой строке:

def testCases(self):

необходимо прочитать:

def runTest(self): 

после этого изменения каждая вещь работает четко.

Моя путаница заключается в том, что изначальнопри создании этих тестов я следовал приведенным здесь инструкциям -> https://selenium -python.readthedocs.io / Они показывают, что вы должны использовать метод testCases (), и это работает!Просто не для вызова класса.Я не знал, куда поместить функцию, не говоря уже о том, что Webdriver имеет встроенную функцию, отличную от той, которую я использовал.

...