основы автоматизации тестирования WebUI на основе селена и UnitTest.
основы автоматизации тестирования веб-интерфейс на основе селена и UnitTest.
особенность
- По умолчанию позиционирование CSS, поддерживая несколько способов позиционирования (идентификатор \ имя \ класс \ LINK_TEXT \ XPath \ CSS).
- Селен на основе второго пакета, проще в использовании.
- Обеспечить строительный лес, чтобы быстро создать проект по автоматизации тестирования.
- / Отчеты / каталог, и HTML тест генерации отчетов Автоматическая генерация.
- Собственные утверждения, утверждение название, URL и текст.
- Пример параметрироваться с носителем.
устанавливать
> pip install -U git+https://github.com/defnngj/pyse.git@master
pyse команда
1 см Помощь:
> pyse -h
usage: pyse [-h] [-V] [--startproject STARTPROJECT] [-r R]
WebUI automation testing framework based on Selenium.
optional arguments:
-h, --help show this help message and exit
-V, --version show version
--startproject STARTPROJECT
Specify new project name.
-r R run test case
2, создать проект:
>pyse --startproject mypro
2019-11-07 00:24:57,783 - INFO - Start to create new test project: mypro
2019-11-07 00:24:57,784 - INFO - CWD: D:\
2019-11-07 00:24:57,785 - INFO - created folder: mypro
2019-11-07 00:24:57,786 - INFO - created folder: mypro\test_dir
2019-11-07 00:24:57,787 - INFO - created folder: mypro\reports
2019-11-07 00:24:57,788 - INFO - created file: mypro\test_dir\test_sample.py
2019-11-07 00:24:57,789 - INFO - created file: mypro\run.py
3, запустить проект:
> cd mypro\
> pyse -r run.py
Python 3.7.1
______ __ __ _______ _______
| _ || | | || _____|| ____|
| |_| || |_| || |_____ | |____
| ___||_ _||_____ || ____|
| | | | _____| || |____
|__| |___| |_______||_______|
generated html file: file:///D:\mypro\reports\2019_11_12_22_28_53_result.html
.1
4. Просмотр отчета
Вы можете перейти в mypro\reports\
каталог просмотр тестового отчета.
API Документы
простой демонстрационный
Смотрите test_sample.py
файл
import pyse
class BaiduTest(pyse.TestCase):
def test_baidu(self):
''' baidu search key : pyse '''
self.open("https://www.baidu.com/")
self.type("#kw", "pyse")
self.click("#su")
self.assertTitle("pyse_百度搜索")
if __name__ == '__main__':
pyse.main("test_sample.py", debug=True)
Описание:
- Создание должен наследоваться тестового класса
pyse.TestCase
. - Файл Тестовый случай должен быть назван
test
в начале. - Позиционирование элементов с использованием режима синтаксиса CSS по умолчанию
#kw
, вы можете также использовать дисплейcss=>#kw
. - pyse инкапсулирует
assertTitle
,assertUrl
иassertText
другие утверждения. - При
main()
работает метод случая испытания.
API
pyse при условии API
self.accept_alert()
self.clear("css=>#el")
self.click("css=>#el")
self.click_text("新闻")
self.dismiss_alert()
self.double_click("css=>#el")
self.drag_and_drop("css=>#el","css=>#ta")
self.get_alert_text()
self.get_attribute("css=>#el","type")
self.get_display("css=>#el")
self.get_text("css=>#el")
self.get_title()
self.get_url()
self.js("window.scrollTo(200,1000);")
self.max_window()
self.move_to_element("css=>#el")
self.open("https://www.baidu.com")
self.open_new_window("link_text=>注册")
self.close()
self.quit()
self.refresh()
self.right_click("css=>#el")
self.screenshots('/Screenshots/foo.png')
self.select("#nr", '20')
self.select("xpath=>//[@name='NR']", '20')
self.set_window(wide, high)
self.submit("css=>#el")
self.switch_to_frame("css=>#el")
self.switch_to_frame_out()
self.type("css=>#el","selenium")
self.wait(10)
Основной метод ()
pyse.main(path="./",
browser="chrome",
title="百度测试用例",
description="测试环境:Firefox",
debug=True
)
Описание:
- путь: Определяет тестовый каталог.
- браузер: Определяет тест браузера по умолчанию Chrome.
- Название: Определяет заголовок тест проекта.
- Описание: Определяет описание теста.
- отладки: режим отладки, установите значение True, не создавая тест HTML тест.
Выполните тест
pyse.main(path="./") # 当前目录下的所有测试文件
pyse.main(path="./test_dir/") # 指定目录下的所有测试文件
pyse.main(path="./test_dir/test_sample.py") # 指定目录下的测试文件
pyse.main(path="test_sample.py") # 指定当前目录下的测试文件
Описание:
- Если указанный каталог, тестовые файлы должны
test
начинаться с. - Если вы хотите запустить файл в подкаталоге должен быть добавлен в подкаталоге
__init__.py
файл.
Поддерживаемые браузеры и привод
Если вы хотите задать тестовые работать в разных браузерах, это очень просто, только нужно pyse.main()
пройти метод browser
набора.
if __name__ == '__main__':
pyse.main(browser="firefox")
Поддерживаемые браузеры "chrome"
включают: "firefox"
, "ie"
, "opera"
, "edge"
,, "chrome_headless"
и так далее.
Различные браузеры скачать драйвер адрес:
geckodriver (Firefox): https: //github.com/mozilla/geckodriver/releases
Chromedriver (хром): https: //sites.google.com/a/chromium.org/chromedriver/home
IEDriverServer (IE): HTTP: //selenium-release.storage.googleapis.com/index.html
operadriver (Opera): https: //github.com/operasoftware/operachromiumdriver/releases
MicrosoftWebDriver (Edge): https: //developer.microsoft.com/en-us/microsoft-edge/tools/webdriver
================================================== ========
Позиционирование элементов
pyse поддерживают различные методы таргетинга, идентификатор, имя, класс, текст ссылки, XPath и CSS. Метод определения местоположения и интеграция контента позиционирования и написали более краткий.
<form id="form" class="fm" action="/s" name="f">
<span class="bg s_ipt_wr quickdelete-wrap">
<input id="kw" class="s_ipt" name="wd">
Режим позиционирования (рекомендуется CSS):
# 默认支持CSS语法
self.type(".s_ipt","pyse") #css
self.type("#su","pyse") #css
# id
self.type("id=>kw", "pyse") #id
# class name
self.type("class=>s_ipt", "pyse") #class定位
# name
self.type("name=>wd", "pyse") #name
# xpath
self.type("xpath=>//*[@class='s_ipt']","pyse") #xpath
self.type("xpath=>//*[@id='kw']","pyse") #xpath
# link text
self.click_text("新闻") #link text (点击百度首页上的"新闻"链接)
CSS селектор Справочное руководство:
http://www.w3school.com.cn/cssref/css_selectors.asp
Параметризованный тест
pyse поддерживает параметрический тест интегрирован параметризованный .
import pyse
from pyse import ddt
class BaiduTest(pyse.TestCase):
@ddt.data([
(1, 'pyse'),
(2, 'selenium'),
(3, 'unittest'),
])
def test_baidu(self, name, keyword):
"""
used parameterized test
:param name: case name
:param search_key: search keyword
"""
self.open("https://www.baidu.com")
self.clear("id=>kw")
self.type("id=>kw", keyword)
self.click("css=>#su")
self.assertTitle(keyword)