Организовать объекты, используя неинстанцированные классы как пространства имен? - PullRequest
1 голос
/ 19 июня 2019

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

# ec module
class EcHR(object):
    class sidemenu(object):
        hrfile: Clickable      = Clickable((By.ID, "sidemenu_HRFile"),       f"HR File")
        hrvistainfo: Clickable = Clickable((By.ID, "sidemenu_HRVistA Info"), f"HR VistA Info")
    class hrfile(__hr_search__):
        class actionmenu(__hr_search__.actionmenu):
            add: Clickable       = Clickable((By.ID, "NewHireLink"), f"Add {BUTTON}")
            personnel: Clickable = Clickable((By.ID, 'setEmpType'), f"Personnel Filter {DROPDOWN}")
            status: Clickable    = Clickable((By.ID, 'setStatus'), f"Status {DROPDOWN}")
            configure: Clickable = Clickable((By.ID, "configureLinkGen"), f"Configure {BUTTON}")
            reports: Clickable   = Clickable((By.ID, 'Reports'), f"Reports {BUTTON}")
            class addmenu(object):
                employee: Clickable = Clickable((By.ID, f'Employee'), f"Add->Employee {BUTTON}")

Пример ссылки на данный элемент в модуле ec.

import ec

    # navigation helper method for a given page
    def do_hrfile_nav(self):
        self.clickbutton(ec.EcHR.sidemenu.hrfile)

Это прекрасно работает;Я могу отслеживать использование каждого объекта, в то же время предоставляя контекст читабельности того, что это за объект.

self.clickbutton(ec.EcHR.sidemenu.hrfile) сообщает читателю, что мы нажимаем на элемент бокового меню hrfile на странице HR.Это важно отличать от ec.EcHR.hrfile, который представляет собой другой набор объектов.

Мой вопрос: Есть ли лучший / более чистый способ организации этих объектов? Я использую классыэто никогда не будет создано.(что почему-то неловко по причинам, которые я не могу сформулировать). Эти классы действуют исключительно как средство, чтобы ссылаться на них организованно.Возможно, какой-то легкий объект данных, имеющий классоподобную структуру?(Я слишком много думаю?)

...