Skip to main content

Seldom automation testing framework based on unittest.

Project description

GitHub | Gitee |

PyPI version PyPI - Python Version

Seldom is an automation testing framework based on unittest.

seldom 是基于unittest 的自动化测试框架。

Features

⭐ web/app/api全功能测试框架

⭐ 提供脚手架快速创建自动化项目

⭐ 集成XTestRunner测试报告,现代美观

⭐ 提供丰富的断言

⭐ 提供强大的数据驱动

⭐ 平台化支持

Install

pip install seldom

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

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

🤖 Quick Start

1、查看帮助:

seldom --help
Usage: seldom [OPTIONS]

  seldom CLI.

Options:
  --version                       Show version.
  --project-api TEXT              Create an API automation test project.
  --project-app TEXT              Create an App automation test project.
  --project-web TEXT              Create an Web automation test project.
  -cc, --clear-cache BOOLEAN      Clear all caches of seldom.
  -p, --path TEXT                 Run test case file path.
  -c, --collect / -nc, --no-collect
                                  Collect project test cases. Need the
                                  `--path`.
  -l, --level [data|method]       Parse the level of use cases. Need the
                                  --path.
  -j, --case-json TEXT            Test case files. Need the `--path`.
  -e, --env TEXT                  Set the Seldom run environment `Seldom.env`.
  -b, --browser [chrome|firefox|ie|edge|safari]
                                  The browser that runs the Web UI automation
                                  tests. Need the `--path`.
  -u, --base-url TEXT             The base-url that runs the HTTP automation
                                  tests. Need the `--path`.
  -d, --debug / -nd, --no-debug   Debug mode. Need the `--path`.
  -rr, --rerun INTEGER            The number of times a use case failed to run
                                  again. Need the `--path`.
  -r, --report TEXT               Set the test report for output. Need the
                                  `--path`.
  -m, --mod TEXT                  Run tests modules, classes or even
                                  individual test methods from the command
                                  line.
  -ll, --log-level [TRACE|DEBUG|INFO|SUCCESS|WARNING|ERROR]
                                  Set the log level.
  -h2c, --har2case TEXT           HAR file converts an seldom test case.
  -s2c, --swagger2case TEXT       Swagger file converts an seldom test case.
  --api-excel TEXT                Run the api test cases in the excel file.
  --help                          Show this message and exit.

2、创建项目:

> seldom --project-api myapi  # API automation test project.
> seldom --project-app myapp  # or App automation test project.
> seldom --project-web myweb  # or Web automation test project.

目录结构如下:

myweb/
├── test_dir/
│   ├── __init__.py
│   └── test_sample.py
├── test_data/
│   └── data.json
├── reports/
└── confrun.py
  • test_dir/ 测试用例目录。
  • test_data/ 测试数据文件目录。
  • reports/ 测试报告目录。
  • confrun.py 运行配置文件。

3、运行项目:

  • ❌️ 在PyCharm中右键执行。

  • ✔️ 通过命令行工具执行。

> seldom -p test_dir # 运行 test_dir 测试目录


              __    __
   ________  / /___/ /___  ____ ____
  / ___/ _ \/ / __  / __ \/ __ ` ___/
 (__  )  __/ / /_/ / /_/ / / / / / /
/____/\___/_/\__,_/\____/_/ /_/ /_/  v3.x.x
-----------------------------------------
                             @itest.info
...

2022-04-30 18:37:36 log.py | INFO |  Find 1 element: id=sb_form_q  -> input 'seldom'.
2022-04-30 18:37:39 log.py | INFO | 👀 assertIn title: seldom - 搜索.
.52022-04-30 18:37:39 log.py | INFO | 📖 https://cn.bing.com
2022-04-30 18:37:41 log.py | INFO |  Find 1 element: id=sb_form_q  -> input 'poium'.
2022-04-30 18:37:42 log.py | INFO | 👀 assertIn title: poium - 搜索.
.62022-04-30 18:37:42 log.py | INFO | 📖 https://cn.bing.com
2022-04-30 18:37:43 log.py | INFO |  Find 1 element: id=sb_form_q  -> input 'XTestRunner'.
2022-04-30 18:37:44 log.py | INFO | 👀 assertIn title: XTestRunner - 搜索.
.72022-04-30 18:37:44 log.py | INFO | 📖 http://www.itest.info
2022-04-30 18:37:52 log.py | INFO | 👀 assertIn url: http://www.itest.info/.
.82022-04-30 18:37:52 log.py | SUCCESS | generated html file: file:///D:\mypro\reports\2022_04_30_18_37_29_result.html
2022-04-30 18:37:52 log.py | SUCCESS | generated log file: file:///D:\mypro\reports\seldom_log.log

4、查看报告

你可以到 mypro\reports\ 目录查看测试报告。

test report

🔬 Demo

seldom继承unittest单元测试框架,完全遵循unittest编写用例规范。

demo 提供了丰富实例,帮你快速了解seldom的用法。

Web UI 测试

import seldom
from seldom import Steps


class BaiduTest(seldom.TestCase):

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

    def test_case_two(self):
        """method chaining """
        Steps().open("https://www.baidu.com").find("#kw").type("seldom").find("#su").click()
        self.assertTitle("seldom_百度搜索")


if __name__ == '__main__':
    seldom.main(browser="chrome")

说明:

  • seldom.main() 通过 browser 指定运行的浏览器。

HTTP 测试

seldom 2.0 支持HTTP测试

import seldom


class TestRequest(seldom.TestCase):

    def test_put_method(self):
        self.put('/put', data={'key': 'value'})
        self.assertStatusCode(200)

    def test_post_method(self):
        self.post('/post', data={'key': 'value'})
        self.assertStatusCode(200)

    def test_get_method(self):
        payload = {'key1': 'value1', 'key2': 'value2'}
        self.get("/get", params=payload)
        self.assertStatusCode(200)

    def test_delete_method(self):
        self.delete('/delete')
        self.assertStatusCode(200)


if __name__ == '__main__':
    seldom.main(base_url="http://httpbin.org")

说明:

  • seldom.main() 通过 base_url 指定接口项目基本URL地址。

App 测试

seldom 3.0 支持App测试

import seldom
from seldom.appium_lab.keyboard import KeyEvent
from seldom.appium_lab.android import UiAutomator2Options


class TestBingApp(seldom.TestCase):

    def start(self):
        self.ke = KeyEvent(self.driver)

    def test_bing_search(self):
        """
        test bing App search
        """
        self.sleep(2)
        self.click(id_="com.microsoft.bing:id/sa_hp_header_search_box")
        self.type(id_="com.microsoft.bing:id/sapphire_search_header_input", text="seldomQA")
        self.ke.press_key("ENTER")
        self.sleep(1)
        elem = self.get_elements(xpath='//android.widget.TextView')
        self.assertIn("seldom", elem[0].text.lower())


if __name__ == '__main__':
    capabilities = {
        'deviceName': 'ELS-AN00',
        'automationName': 'UiAutomator2',
        'platformName': 'Android',
        'appPackage': 'com.microsoft.bing',
        'appActivity': 'com.microsoft.sapphire.app.main.MainSapphireActivity',
        'noReset': True,
    }
    options = UiAutomator2Options().load_capabilities(capabilities)
    seldom.main(app_server="http://127.0.0.1:4723", app_info=options, debug=True)

说明:

  • seldom.main() 通过 app_info 指定App信息; app_server 指定appium server 地址。

📖 Document

中文文档

项目实例

基于seldom的web UI自动化项目:

https://github.com/SeldomQA/seldom-web-testing

基于seldom的接口自动化项目:

https://github.com/defnngj/seldom-api-testing

微信(WeChat)

相关书籍推荐, 基于 SeldomQA 相关开源项目,虫师 编著。

京东链接

欢迎添加微信,交流和反馈问题。

微信

Star History

Star History Chart

感谢

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

贡献者

交流

QQ群:948994709

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

seldom-3.13.0.tar.gz (99.2 kB view details)

Uploaded Source

Built Distribution

seldom-3.13.0-py3-none-any.whl (120.4 kB view details)

Uploaded Python 3

File details

Details for the file seldom-3.13.0.tar.gz.

File metadata

  • Download URL: seldom-3.13.0.tar.gz
  • Upload date:
  • Size: 99.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for seldom-3.13.0.tar.gz
Algorithm Hash digest
SHA256 4907c4585128054b6c48b575ee2ad6a124ea90c4204cd743c9d8ee213a301030
MD5 09576ddaa2cbf546180aa86baa84d67a
BLAKE2b-256 f5bce4da63bf892a24f3164804e67319570b5b61b4248493bb3f12ffcc7933d3

See more details on using hashes here.

File details

Details for the file seldom-3.13.0-py3-none-any.whl.

File metadata

  • Download URL: seldom-3.13.0-py3-none-any.whl
  • Upload date:
  • Size: 120.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for seldom-3.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1d416cd86edd691431982b744c081b726682c2c23a4140fb813b27b73f5fd730
MD5 737f471b16baa950391546dcb1329b6c
BLAKE2b-256 6358b77bdd5fdbf0bc813e38e434d61d2677067be38d377e99839f00eb50373b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page