Как иметь множественное наследование в файле библиотеки Robot Framework? - PullRequest
0 голосов
/ 09 июля 2019

Я хотел бы, чтобы установка, как показано ниже, в моем файле библиотеки в python для фреймворка робота.


Class Main(foo):
    def common_functions():
       pass

Class Child1(Main):
    def something_unique_child1():
       pass

Class Child2(Main):
    def something_unique_child2():
      pass

Однако, чтобы использовать эти классы, мне пришлось бы импортировать их в файл .robot по отдельности выглядит так: -

Library                 python_filename . Child1
Library                 python_filename . Child2

Теперь. Проблема в том, что если мне нужно использовать ключевое слово «Common_functions ()», робот выдает ошибку, заявляя, что существует «Несколько ключевых слов с одинаковым именем»

Я предполагаю, что, поскольку эта функция доступна обоим подклассам, она становится запутанной.

Как достичь этой функциональности в РФ?

Дополнительная информация: Причина, по которой я хотел бы иметь наследование (как мне было указано, что это не лучший способ написания библиотек), заключается в том, что есть функция, которая имеет несколько функций под ней, представьте ее как функцию меню

( Файл -> Закрыть, Файл -> Сохранить, Файл -> Сохранить как )

Теперь, эта функция «Сохранить» сама по себе имеет множество подфункций, поэтому открытие приложения и переход к «Файл -> Сохранить» - это повторяющийся шаг, который я должен сделать снова и снова для всех подфункций.

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

Ответы [ 2 ]

2 голосов
/ 09 июля 2019

Нет необходимости импортировать все три класса.Поскольку Child2 наследуется от Main, а Child1 наследуется от Main, все, что вам нужно сделать, это импортировать Child1 и Child2, чтобы получить все ключевые слова из всех трех классов.

Однако, если вам нужны все ключевые слова, вы можете Child2 наследовать от Child1, а затем просто импортировать Child2, чтобы получить все ключевые слова.

Если вы настаиваете на желании импортировать все три, вы можете сделать две вещи:

Во-первых, вы можете полностью определить ключевое слово, чтобы робот знал, какую библиотеку использовать.Например, Child1.common_functions.

Другое, что вы можете сделать, это использовать встроенное ключевое слово Set 10 * *, чтобы указать роботу, какую библиотеку использовать при возникновении конфликтов.

1 голос
/ 09 июля 2019

Вы пробовали с квалифицированным именем ключевого слова? Указание библиотеки, которая должна предоставлять ключевое слово, когда возникает конфликт имен (как в вашем случае):

python_filename.Main.Common Functions

И если вывод полной библиотеки.class слишком громоздок, вы можете импортировать их с псевдонимом - WITH NAME и использовать его:

Library                 python_filename.Child2    WITH NAME    c2
....
c2.Common Functions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...