转载:https://www.cnblogs.com/fnng/p/11846050.html(虫师大佬)
pyse 更名为 seldom
WebUI automation testing framework based on Selenium and unittest.
基于 selenium 和 unittest 的 Web UI自动化测试框架。
特点
- 提供更加简单API编写自动化测试。
- 提供脚手架,快速生成自动化测试项目。
- 自动生成HTML测试报告生成。
- 自带断言方法,断言title、URL 和 text。
- 支持用例参数化。
- 支持用例失败重跑。
- 用例失败/错误截图。
安装
1 > pip install seldom 2 If you want to keep up with the latest version, you can install with github repository url: 3 4 > pip install -U git+https://github.com/defnngj/seldom.git@master
Quick Start
1、查看帮助:
1 > seldom -h 2 usage: seldom [-h] [-V] [--startproject STARTPROJECT] [-r R] 3 4 WebUI automation testing framework based on Selenium. 5 6 optional arguments: 7 -h, --help show this help message and exit 8 -V, --version show version 9 --startproject STARTPROJECT 10 Specify new project name. 11 -r R run test case
2、创建项目:
1 >seldom --startproject mypro
3、目录结构:
mypro/
├── test_dir/
│ ├── test_sample.py
├── report/
└── run.py
test_dir/
目录实现用例编写。report/
目录存放生成的测试报告。run.py
文件运行测试用例。
3、运行项目:
> seldom -r run.py
Python 3.7.1
_ _
| | | |
___ ___ | | __| | ___ _ __ ___
/ __| / _ | | / _` | / _ | '_ ` _
\__ | __/| || (_| || (_) || | | | | |
|___/ \___||_| \__,_| \___/ |_| |_| |_|
-----------------------------------------
@itest.info
generated html file: file:///D:mypro
eports2019_11_12_22_28_53_result.html
.1
4、查看报告
你可以到 mypro
eports
目录查看测试报告。
API Documents
simple demo
请查看 demo/test_sample.py
文件
1 import seldom 2 3 4 class YouTest(seldom.TestCase): 5 6 def test_case(self): 7 """a simple test case """ 8 self.open("https://www.baidu.com") 9 self.type(id_="kw", text="seldom") 10 self.click(css="#su") 11 self.assertTitle("seldom") 12 13 14 if __name__ == '__main__': 15 seldom.main("test_sample.py")
说明:
- 创建测试类必须继承
seldom.TestCase
。 - 测试用例文件命名必须以
test
开头。 - seldom的封装了
assertTitle
、assertUrl
和assertText
等断言方法。
main() 方法
import seldom # ... if __name__ == '__main__': seldom.main(path="./", browser="chrome", title="百度测试用例", description="测试环境:chrome", debug=False, rerun=0, save_last_run=False )
说明:
- path : 指定测试目录或文件。
- browser: 指定测试浏览器,默认
Chrome
。 - title : 指定测试报告标题。
- description : 指定测试报告描述。
- debug : debug模式,设置为True不生成测试HTML测试,默认为
False
。 - rerun : 设置失败重新运行次数,默认为
0
。 - save_last_run : 设置只保存最后一次的结果,默认为
False
。
Run the test
1 import seldom 2 3 seldom.main(path="./") # 当前目录下的所有测试文件 4 seldom.main(path="./test_dir/") # 指定目录下的所有测试文件 5 seldom.main(path="./test_dir/test_sample.py") # 指定目录下的测试文件 6 seldom.main(path="test_sample.py") # 指定当前目录下的测试文件
说明:
- 如果指定的目录,测试文件必须以
test
开头。 - 如果要运行子目录下的文件,必须在子目录下加
__init__.py
文件。
支持的浏览器及驱动
如果你想指定测试用例在不同的浏览器中运行,非常简单,只需要在seldom.main()
方法中通过browser
参数设置。
import seldom if __name__ == '__main__': seldom.main(browser="chrome") # chrome浏览器,默认值 seldom.main(browser="firefox") # firefox浏览器 seldom.main(browser="ie") # IE浏览器 seldom.main(browser="opera") # opera浏览器 seldom.main(browser="edge") # edge浏览器 seldom.main(browser="chrome_headless") # chrome浏览器headless模式 seldom.main(browser="firefox_headless") # Firefox浏览器headless模式
不同浏览器驱动下载地址:
geckodriver(Firefox):https://github.com/mozilla/geckodriver/releases
Chromedriver(Chrome):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
==========================================================
元素定位
1 <form id="form" class="fm" action="/s" name="f"> 2 <span class="bg s_ipt_wr quickdelete-wrap"> 3 <input id="kw" class="s_ipt" name="wd">
定位方式:
1 self.type(id_="kw", text="seldom") 2 self.type(name="wd", text="seldom") 3 self.type(class_name="s_ipt", text="seldom") 4 self.type(tag="input", text="seldom") 5 self.type(link_text="hao123", text="seldom") 6 self.type(partial_link_text="hao", text="seldom") 7 self.type(xpath="//input[@id='kw']", text="seldom") 8 self.type(css="#kw", text="seldom")
参数化测试用例
seldom 支持参数化测试用例,集成了parameterized。
1 import seldom 2 from seldom import ddt 3 4 # ... 5 6 class BaiduTest(seldom.TestCase): 7 8 @ddt.data([ 9 (1, 'seldom'), 10 (2, 'selenium'), 11 (3, 'unittest'), 12 ]) 13 def test_baidu(self, name, keyword): 14 """ 15 used parameterized test 16 :param name: case name 17 :param keyword: search keyword 18 """ 19 self.open("https://www.baidu.com") 20 self.type(id_="kw", text=keyword) 21 self.click(css="#su") 22 self.assertTitle(search_key+"_百度搜索")
page objects 设计模式
seldom 支持Page objects设计模式,可以配合poium 使用。
1 import seldom 2 from poium import Page, PageElement 3 4 5 class BaiduPage(Page): 6 """baidu page""" 7 search_input = PageElement(id_="kw") 8 search_button = PageElement(id_="su") 9 10 11 class BaiduTest(seldom.TestCase): 12 """Baidu serach test case""" 13 14 def test_case(self): 15 """ 16 A simple test 17 """ 18 page = BaiduPage(self.driver) 19 page.get("https://www.baidu.com") 20 page.search_input = "seldom" 21 page.search_button.click() 22 self.assertTitle("seldom_百度搜索") 23 24 25 if __name__ == '__main__': 26 seldom.main("test_po_demo.py")
poium提供了更多好用的功能,使Page层的创建更加简单。亲测好用