17 форматов синтаксиса/рисунки дизайна
( смотреть это руководство на YouTube )
SeleniumBase Поддерживает 17 различных форматов синтаксиса (шаблоны дизайна) для структурирующих испытаний. (Первые 6 являются наиболее распространенными.)
1. Базовое прямое наследование
Этот формат используется большинством примеров в Папка SeleniumBase Примеры Отказ Это отличная отправная точка для любого обучения SeleniumBase, и это следует хорошими объектно-ориентированными принципами программирования. В этом формате BaseCase
импортируется в верхней части файла Python, за которым следует класс Python, наследующий Базовый вариант
. Затем любой метод испытаний, определенный в этом классе, автоматически получает доступ к методам селениумбазы, включая Настройка ()
и Обзор ()
Методы, которые автоматически вызывают для вращения и вращения веб-браузеров в начале и в конце методов испытаний. Вот пример этого:
from seleniumbase import BaseCase class MyTestClass(BaseCase): def test_demo_site(self): self.open("https://seleniumbase.io/demo_page") self.type("#myTextInput", "This is Automated") self.click("#myButton") self.assert_element("tbody#tbodyId") self.assert_text("Automation Practice", "h3") self.click_link("SeleniumBase Demo Page") self.assert_exact_text("Demo Page", "h1") self.assert_no_js_errors()
(См. Примеры/test_demo_site.py для полного теста.)
2. Наследование подкласса BaseCase
Есть ситуации, когда вы можете настроить Настройка
и Обзор
ваших тестов. Может быть, вы хотите иметь все ваши тесты в систему в систему на определенный веб-сайт, или, возможно, вы хотите, чтобы ваши тесты были результаты отчета о результатах в зависимости от вызова API в зависимости от того, прошел ли тест или сбой. Это можно сделать, создавая подкласс Базовый вариант
а затем тщательно создавать пользовательские Настройка ()
и Обзор ()
Методы, которые не перезаписывают критические функциональные возможности селениумбазной базы по умолчанию Настройка ()
и Обзор ()
методы. После этого ваши тестовые классы наследуют подкласс BaseCase
С добавленной функциональностью, а не напрямую наследовать BaseCase
сам. Вот пример этого:
from seleniumbase import BaseCase class BaseTestCase(BaseCase): def setUp(self): super(BaseTestCase, self).setUp() # <<< Run custom setUp() code for tests AFTER the super().setUp() >>> def tearDown(self): self.save_teardown_screenshot() if self.has_exception(): # <<< Run custom code if the test failed. >>> pass else: # <<< Run custom code if the test passed. >>> pass # (Wrap unreliable tearDown() code in a try/except block.) # <<< Run custom tearDown() code BEFORE the super().tearDown() >>> super(BaseTestCase, self).tearDown() def login(self): # <<< Placeholder. Add your code here. >>> # Reduce duplicate code in tests by having reusable methods like this. # If the UI changes, the fix can be applied in one place. pass def example_method(self): # <<< Placeholder. Add your code here. >>> pass class MyTests(BaseTestCase): def test_example(self): self.login() self.example_method() self.type("input", "Name") self.click("form button") ...
(См. Примеры/котельные/base_test_case.py для получения дополнительной информации.)
3. SB Petest Baskture (без класса)
Pytest Framework поставляется с уникальной системой, называемыми приборами, которые заменяет отчетности импорта в верхней части файлов Python, импортируя библиотеки непосредственно в определения теста. Больше, чем просто в том, чтобы быть импортным, причем Ptyest также может автоматически звонить предопределенным Настройка ()
и Обзор ()
Методы в начале и конце тестовых методов. Работать, SB
Добавляют в качестве аргумента для каждого определения метода теста, который нуждается в функциональности селениумбазы. Это означает, что вам больше не нуждаются в импортных операторах в ваших файлах Python для использования SeleniumBase. При использовании других приспособлений Ptyest в ваших тестах, возможно, вам может потребоваться использовать крепеж SELENIAMBASE (вместо BaseCase
Наследование класса) для соображений совместимости. Вот пример SB
Смель в тесте, который не использует классы Python:
def test_sb_fixture_with_no_class(sb): sb.open("https://google.com/ncr") sb.type(, 'SeleniumBase\n') sb.click() sb.click()
(См. Вершина Примеры/test_sb_fixture.py для теста.)
4. SB Petest Baskture (в классе)
SB
Приспособление Pteest также можно использовать внутри класса. Существует небольшое изменение в синтаксисе, потому что это означает, что методы испытаний также должны включать Я
В их определениях аргументов, когда определяются методы испытаний. (A Self
Аргумент представляет объект класса и используется в каждом методе теста, который живет внутри класса.) Еще раз, в файлах Python не требуется никаких операторов импорта в файлах Python. Вот пример использования SB
Смель в методе теста, который живет внутри класса Python:
class Test_SB_Fixture: def test_sb_fixture_inside_class(self, sb): sb.open("https://google.com/ncr") sb.type(, 'SeleniumBase\n') sb.click() sb.click()
(См. Нижняя часть Примеры/test_sb_fixture.py для теста.)
5. Классическая модель объекта страницы с базовой наследованием
С SeleniumBase вы можете использовать объекты страницы, чтобы вырвать код из тестов, но помните, Я
переменная (от методов испытаний, которые наследуют BaseCase
) содержит драйвер и все другие переменные переменные определения. Поэтому, что Я
Необходимо пропущено как ARG в любой метод внешнего класса, чтобы позвонить методам селенбазы. В приведенном ниже примере Я
Переменная от метода испытаний передается в SB
ARG метода класса объекта страницы, потому что Я
Arg из метода класса объекта страницы уже используется для собственного класса. Каждый определение метода класса Python должно включать в себя Я
как первый аргумент.
from seleniumbase import BaseCase class LoginPage: def login_to_swag_labs(self, sb, username): sb.open("https://www.saucedemo.com") sb.type("#user-name", username) sb.type("#password", "secret_sauce") sb.click() class MyTests(BaseCase): def test_swag_labs_login(self): LoginPage().login_to_swag_labs(self, "standard_user") self.assert_element("#inventory_container") self.assert_element('div:contains("Sauce Labs Backpack")')
(См. Примеры/котельные/образцы/образцы/swag_labs_test.py . для полного теста.)
6. Классическая модель объекта страницы с приспособлением SB Pteest
Это похоже на классическую модель объекта страницы с BaseCase
Наследование, за исключением того, что на этот раз мы проходим SB
Petest Baskture от теста в SB
Arg из метода класса объекта страницы (вместо того, чтобы пройти self
). Теперь, когда вы используете SB
Как приспособление для Ptyest, вам больше не нужно импортировать Базовый вариант
В любом месте в вашем коде. Смотрите пример ниже:
class LoginPage: def login_to_swag_labs(self, sb, username): sb.open("https://www.saucedemo.com") sb.type("#user-name", username) sb.type("#password", "secret_sauce") sb.click() class MyTests: def test_swag_labs_login(self, sb): LoginPage().login_to_swag_labs(sb, "standard_user") sb.assert_element("#inventory_container") sb.assert_element('div:contains("Sauce Labs Backpack")')
(См. Примеры/котельные/образцы/SB_swag_test.py для полного теста.)
7. Использование крепежа запроса, чтобы получить крепеж SB (без класса)
Pтойцы Запрос
Приспособление может быть использовано для получения других приспособлений Ptyest из в тестах, таких как SB
приспособление. Это позволяет вам иметь больше контроля, когда приспособления инициализируются, поскольку приспособление больше не нужно загружаться в самом начале методов испытаний. Это делается, позвонив request.getfixturevalue ('sb')
от теста. Вот пример использования Pтойца Запрос
Приспособление для загрузки SB
Приспособление в методе теста, который не использует классы Python:
def test_request_sb_fixture(request): sb = request.getfixturevalue('sb') sb.open("https://seleniumbase.io/demo_page") sb.assert_text("SeleniumBase", "#myForm h2") sb.assert_element("input#myTextInput") sb.type("#myTextarea", "This is me") sb.click("#myButton") sb.tearDown()
(См. Вершина Примеры/test_request_sb_fixture.py для теста.)
8. Использование крепежа запроса, чтобы получить SB-прибор (в классе)
Pтойцы Запрос
Крепеж также можно использовать для получения SB
Смесь изнутри класса Python. Вот пример этого:
class Test_Request_Fixture: def test_request_sb_fixture_in_class(self, request): sb = request.getfixturevalue('sb') sb.open("https://seleniumbase.io/demo_page") sb.assert_element("input#myTextInput") sb.type("#myTextarea", "Automated") sb.assert_text("This Text is Green", "#pText") sb.click("#myButton") sb.assert_text("This Text is Purple", "#pText") sb.tearDown()
(См. Нижняя часть Примеры/test_request_sb_fixture.py для теста.)
9. Селенбаза на китайском языке
Этот формат похож на английскую версию с BaseCase
Наследование, но есть другое оператор импорта, а имена методов были переведены на китайский. Вот пример этого:
from seleniumbase.translate.chinese import 硒测试用例 class 我的测试类(硒测试用例): def test_例子1(self): self.开启("https://zh.wikipedia.org/wiki/") self.断言标题("维基百科,自由的百科全书") self.断言元素() self.断言文本("新闻动态", "span#新闻动态") self.输入文本("#searchInput", "舞龍") self.单击("#searchButton") self.断言文本("舞龍", "#firstHeading") self.断言元素() self.输入文本("#searchInput", "火鍋") self.单击("#searchButton") self.断言文本("火鍋", "#firstHeading") self.断言元素('td:contains("火鍋的各種食材")') self.输入文本("#searchInput", "精武英雄") self.单击("#searchButton") self.断言元素() self.断言文本("李连杰", 'li a[title="李连杰"]')
(См. Примеры/переводы/Chinese_test_1.py для китайского теста.)
10. Селенбаза в голландском
Этот формат похож на английскую версию с BaseCase
Наследование, но есть другое оператор импорта, а имена методов были переведены на голландские. Вот пример этого:
from seleniumbase.translate.dutch import Testgeval class MijnTestklasse(Testgeval): def test_voorbeeld_1(self): self.openen("https://nl.wikipedia.org/wiki/Hoofdpagina") self.controleren_element() self.controleren_tekst("Welkom op Wikipedia", "td.hp-welkom") self.typ("#searchInput", "Stroopwafel") self.klik("#searchButton") self.controleren_tekst("Stroopwafel", "#firstHeading") self.controleren_element() self.typ("#searchInput", "Rijksmuseum Amsterdam") self.klik("#searchButton") self.controleren_tekst("Rijksmuseum", "#firstHeading") self.controleren_element() self.terug() self.controleren_ware("Stroopwafel" in self.huidige_url_ophalen()) self.vooruit() self.controleren_ware("Rijksmuseum" in self.huidige_url_ophalen())
(См. Примеры/переводы/dutch_test_1.py для голландского теста.)
11. Селенбаза на французском языке
Этот формат похож на английскую версию с BaseCase
Наследование, но есть другое оператор импорта, а имена методов были переведены на французский. Вот пример этого:
from seleniumbase.translate.french import CasDeBase class MaClasseDeTest(CasDeBase): def test_exemple_1(self): self.ouvrir("https://fr.wikipedia.org/wiki/") self.vérifier_texte("Wikipédia") self.vérifier_élément() self.taper("#searchInput", "Crème brûlée") self.cliquer("#searchButton") self.vérifier_texte("Crème brûlée", "#firstHeading") self.vérifier_élément() self.taper("#searchInput", "Jardin des Tuileries") self.cliquer("#searchButton") self.vérifier_texte("Jardin des Tuileries", "#firstHeading") self.vérifier_élément() self.retour() self.vérifier_vrai("brûlée" in self.obtenir_url_actuelle()) self.en_avant() self.vérifier_vrai("Jardin" in self.obtenir_url_actuelle())
(См. Примеры/переводы/frension_test_1.py для французского теста.)
12. Селенбаза на итальянском языке
Этот формат похож на английскую версию с BaseCase
Наследование, но есть другое оператор импорта, а имена методов были переведены на итальянский. Вот пример этого:
from seleniumbase.translate.italian import CasoDiProva class MiaClasseDiTest(CasoDiProva): def test_esempio_1(self): self.apri("https://it.wikipedia.org/wiki/") self.verificare_testo("Wikipedia") self.verificare_elemento() self.digitare("#searchInput", "Pizza") self.fare_clic("#searchButton") self.verificare_testo("Pizza", "#firstHeading") self.verificare_elemento() self.digitare("#searchInput", "Colosseo") self.fare_clic("#searchButton") self.verificare_testo("Colosseo", "#firstHeading") self.verificare_elemento() self.indietro() self.verificare_vero("Pizza" in self.ottenere_url_corrente()) self.avanti() self.verificare_vero("Colosseo" in self.ottenere_url_corrente())
(См. Примеры/переводы/Italian_test_1.py для итальянского теста.)
13. Селенбаза в японском языке
Этот формат похож на английскую версию с BaseCase
Наследование, но есть другое оператор импорта, а имена методов были переведены на японский. Вот пример этого:
from seleniumbase.translate.japanese import セレニウムテストケース class 私のテストクラス(セレニウムテストケース): def test_例1(self): self.を開く("https://ja.wikipedia.org/wiki/") self.テキストを確認する("ウィキペディア") self.要素を確認する() self.入力("#searchInput", "アニメ") self.クリックして("#searchButton") self.テキストを確認する("アニメ", "#firstHeading") self.入力("#searchInput", "寿司") self.クリックして("#searchButton") self.テキストを確認する("寿司", "#firstHeading") self.要素を確認する() self.入力("#searchInput", "レゴランド・ジャパン") self.クリックして("#searchButton") self.要素を確認する() self.リンクテキストを確認する("名古屋城") self.リンクテキストをクリックします("テーマパーク") self.テキストを確認する("テーマパーク", "#firstHeading")
(См. Примеры/переводы/Японии_test_1.py для японского теста.)
14. Селенбаза в корее
Этот формат похож на английскую версию с BaseCase
Наследование, но есть другое оператор импорта, а имена методов были переведены на корейский. Вот пример этого:
from seleniumbase.translate.korean import 셀레늄_테스트_케이스 class 테스트_클래스(셀레늄_테스트_케이스): def test_실시예_1(self): self.열기("https://ko.wikipedia.org/wiki/") self.텍스트_확인("위키백과") self.요소_확인() self.입력("#searchInput", "김치") self.클릭("#searchButton") self.텍스트_확인("김치", "#firstHeading") self.요소_확인() self.링크_텍스트_확인("한국 요리") self.입력("#searchInput", "비빔밥") self.클릭("#searchButton") self.텍스트_확인("비빔밥", "#firstHeading") self.요소_확인() self.링크_텍스트를_클릭합니다("돌솥비빔밥") self.텍스트_확인("돌솥비빔밥", "#firstHeading")
(См. Примеры/переводы/korean_test_1.py для корейского теста.)
15. Селенбаза в португальском
Этот формат похож на английскую версию с BaseCase
Наследование, но есть другое оператор импорта, а имена методов были переведены на португальский. Вот пример этого:
from seleniumbase.translate.portuguese import CasoDeTeste class MinhaClasseDeTeste(CasoDeTeste): def test_exemplo_1(self): self.abrir("https://pt.wikipedia.org/wiki/") self.verificar_texto("Wikipédia") self.verificar_elemento() self.digitar("#searchInput", "João Pessoa") self.clique("#searchButton") self.verificar_texto("João Pessoa", "#firstHeading") self.verificar_elemento() self.digitar("#searchInput", "Florianópolis") self.clique("#searchButton") self.verificar_texto("Florianópolis", "h1#firstHeading") self.verificar_elemento() self.voltar() self.verificar_verdade("João" in self.obter_url_atual()) self.digitar("#searchInput", "Teatro Amazonas") self.clique("#searchButton") self.verificar_texto("Teatro Amazonas", "#firstHeading") self.verificar_texto_do_link("Festival Amazonas de Ópera")
(См. Примеры/переводы/portuguese_test_1.py для португальского теста.)
16. Селенбаза на русском языке
Этот формат похож на английскую версию с BaseCase
Наследование, но есть другое оператор импорта, а имена методов были переведены на русский язык. Вот пример этого:
from seleniumbase.translate.russian import ТестНаСелен class МойТестовыйКласс(ТестНаСелен): def test_пример_1(self): self.открыть("https://ru.wikipedia.org/wiki/") self.подтвердить_элемент() self.подтвердить_текст("Википедия", "h2.main-wikimedia-header") self.введите("#searchInput", "МГУ") self.нажмите("#searchButton") self.подтвердить_текст("университет", "#firstHeading") self.подтвердить_элемент() self.введите("#searchInput", "приключения Шурика") self.нажмите("#searchButton") self.подтвердить_текст("Операция «Ы» и другие приключения Шурика") self.подтвердить_элемент() self.назад() self.подтвердить_правду("университет" in self.получить_текущий_URL()) self.вперед() self.подтвердить_правду("Шурика" in self.получить_текущий_URL())
(См. Примеры/переводы/Russian_test_1.py для российского теста.)
17. Селенбаза по-испански
Этот формат похож на английскую версию с BaseCase
Наследование, но есть другое оператор импорта, а имена методов были переведены на испанский. Вот пример этого:
from seleniumbase.translate.spanish import CasoDePrueba class MiClaseDePrueba(CasoDePrueba): def test_ejemplo_1(self): self.abrir("https://es.wikipedia.org/wiki/") self.verificar_texto("Wikipedia") self.verificar_elemento() self.escriba("#searchInput", "Parc d'Atraccions Tibidabo") self.haga_clic("#searchButton") self.verificar_texto("Tibidabo", "#firstHeading") self.verificar_elemento() self.escriba("#searchInput", "Palma de Mallorca") self.haga_clic("#searchButton") self.verificar_texto("Palma de Mallorca", "#firstHeading") self.verificar_elemento() self.volver() self.verificar_verdad("Tibidabo" in self.obtener_url_actual()) self.adelante() self.verificar_verdad("Mallorca" in self.obtener_url_actual())
(См. Примеры/переводы/spanish_test_1.py для испанского теста.)
Оригинал: “https://dev.to/seleniumbase/the-15-syntax-formats-of-seleniumbase-i1b”