简单Web UI 自动化测试框架 seldom

摘要:
功能提供了一个更简单的API来编写自动化测试。提供快速生成自动化测试项目的脚手架。自动生成HTML测试报告生成。APIDocumentsimpledemo请检查demo/test_Sample.py文件importseldomclassYouTest:defest_case:“”“asimplestcase”“”self.openself.typeself.clickself.assertTitle_ _ name__=='__main__':Seldom.main描述:创建测试类时,必须继承Seldom.TestCase。测试用例文件名必须以test开头。很少封装assertTitle、assertUrl、assertText和其他断言方法。支持的浏览器和驱动程序如果您想指定在不同浏览器中运行的测试用例,这非常简单。您只需要在罕见的.main()方法中设置浏览器参数。

pyse 更名为 seldom

简单Web UI 自动化测试框架 seldom第1张

WebUI automation testing framework based on Selenium and unittest.

基于 selenium 和 unittest 的 Web UI自动化测试框架。

特点

  • 提供更加简单API编写自动化测试。
  • 提供脚手架,快速生成自动化测试项目。
  • 自动生成HTML测试报告生成。
  • 自带断言方法,断言title、URL 和 text。
  • 支持用例参数化。
  • 支持用例失败重跑。
  • 用例失败/错误截图。

安装

> pip install seldom

If you want to keep up with the latest version, you can install with github repository url:

> pip install -U git+https://github.com/defnngj/seldom.git@master

Quick Start

1、查看帮助:

> seldom -h
usage: seldom [-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、创建项目:

>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 目录查看测试报告。

简单Web UI 自动化测试框架 seldom第2张

API Documents

simple demo

请查看 demo/test_sample.py 文件

import seldom


class YouTest(seldom.TestCase):

    def test_case(self):
        """a simple test case """
        self.open("https://www.baidu.com")
        self.type(id_="kw", text="seldom")
        self.click(css="#su")
        self.assertTitle("seldom")


if __name__ == '__main__':
    seldom.main("test_sample.py")

说明:

  • 创建测试类必须继承 seldom.TestCase
  • 测试用例文件命名必须以 test 开头。
  • seldom的封装了assertTitleassertUrlassertText等断言方法。

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

import seldom

seldom.main(path="./")  # 当前目录下的所有测试文件
seldom.main(path="./test_dir/")  # 指定目录下的所有测试文件
seldom.main(path="./test_dir/test_sample.py")  # 指定目录下的测试文件
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

==========================================================

元素定位

<form     action="/s" name="f">
    <span class="bg s_ipt_wr quickdelete-wrap">
        <input     name="wd">

定位方式:

self.type(id_="kw", text="seldom")
self.type(name="wd", text="seldom")
self.type(class_name="s_ipt", text="seldom")
self.type(tag="input", text="seldom")
self.type(link_text="hao123", text="seldom")
self.type(partial_link_text="hao", text="seldom")
self.type(xpath="//input[@id='kw']", text="seldom")
self.type(css="#kw", text="seldom")

参数化测试用例

seldom 支持参数化测试用例,集成了parameterized


import seldom
from seldom import ddt

# ...

class BaiduTest(seldom.TestCase):

    @ddt.data([
        (1, 'seldom'),
        (2, 'selenium'),
        (3, 'unittest'),
    ])
    def test_baidu(self, name, keyword):
        """
         used parameterized test
        :param name: case name
        :param keyword: search keyword
        """
        self.open("https://www.baidu.com")
        self.type(id_="kw", text=keyword)
        self.click(css="#su")
        self.assertTitle(search_key+"_百度搜索")

page objects 设计模式

seldom 支持Page objects设计模式,可以配合poium 使用。

import seldom
from poium import Page, PageElement


class BaiduPage(Page):
    """baidu page"""
    search_input = PageElement(id_="kw")
    search_button = PageElement(id_="su")


class BaiduTest(seldom.TestCase):
    """Baidu serach test case"""

    def test_case(self):
        """
        A simple test
        """
        page = BaiduPage(self.driver)
        page.get("https://www.baidu.com")
        page.search_input = "seldom"
        page.search_button.click()
        self.assertTitle("seldom_百度搜索")


if __name__ == '__main__':
    seldom.main("test_po_demo.py")

poium提供了更多好用的功能,使Page层的创建更加简单。

感谢

感谢从以下项目中得到思路和帮助。

交流

QQ群:948994709

免责声明:文章转载自《简单Web UI 自动化测试框架 seldom》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇javascript 使用数据加密跟base64 编码Linux下命令行安装WebLogic 10.3.6下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker--container

[root@localhost docker_test]# docker run bigni/test3 #运行 docker so easy ! [root@localhost docker_test]# docker container ls #查看在运行的tontainer,发现没有上面运行的container,原因是上面的程序不是常驻内存的进程,...

[Android]Android的常用adb命令

第一部分: 1. ubuntu下配置环境anroid变量: 在终端执行sudo gedit /etc/profile 打开文本编辑器,在最后追加#set android environment 2. 运行Eclipse,还需要配置JAVA环境变量 #set java environment JAVA_HOME=/home/loginname/jdk目录名...

linux shell脚本神一般的测试案例

本人对shell脚本一点都不了解,工作中用到了shell脚本,所有就只能赶鸭子上架,搜度娘一点一点的写了。在搜索的过程中看到了比较好的案例。大家可以参考一下。以后肯定可以用的到。 声明本文转载至 http://www.educity.cn/linux/1241314.html 脚本1:为root用户编写登录欢迎脚本:   1、用vi命令在/root目录是新...

python文件路径分隔符的详细分析

写了挺久的python,文件分隔符的掌握肯定是必须的,但是我之前写的都是不规范的文件路径分隔符,例如‘’C:User emppython.txt’,一直都没有报过错。也不知为啥,今天查阅资料才知道自己写的都是些假的python,所以就在此记录一下。 主要是需要考虑分隔符的问题:在Windows系统下的分隔符是: (反斜杠)。 在Linux系统下的分隔符是:...

bash 的环境配置文件

http://www.cnblogs.com/ggjucheng/archive/2012/11/01/2750179.html bash 的环境配置文件 你是否会觉得奇怪,怎么我们什么动作都没有进行,但是一进入 bash 就取得一堆有用的变量了? 这是因为系统有一些环境配置文件案的存在,让 bash 在启动时直接读取这些配置文件,以规划好 bash 的...

Centos下堡垒机Jumpserver V3.0环境部署完整记录(2)-配置篇

前面已经介绍了Jumpserver V3.0的安装,基于这篇安装文档,下面说下Jumpserver安装后的的功能使用: 一、jumpserver的启动 Jumpserver的启动和重启 [root@test-vm001 install]# /opt/jumpserver/service.sh start/restart 二、按照Jumpserver部署过...