Skip to main content

py-ops: 一款面向编程的Python关键字测试框架™

https://raw.githubusercontent.com/five3/pyops/master/images/testqa.png

☤ 说明

这是一款基于``pytest``封装,同时支持``关键字``和``BDD``,测试数据分离,面向编程,轻量级的,对上层自动化应用友好的基础测试框架。

其主要核心功能:

  • 支持关键字定义

  • 支持关键字组装

  • 测试数据透传

该框架的主要特点:

  • 基于``pytest``框架开发,支持原生插件

  • 同时具备``关键字``和``BDD``框架的特点

  • 无二次学习成本(Python|json)

  • 天然支持``测试数据分离``与传递

  • 对上层应用提供友好的封装接口

  • 支持脚本``Debug``调试

  • 代码量少(7个文件500行代码)

☤ 环境安装

pip install py-ops

或者使用下面命令安装最新版:

pip install git+https://github.com/five3/pyops.git

☤ 快速开始

使用该框架非常的方便,基本没有学习成本。安装完成之后,在任意目录执行如下命令创建一个测试项目:

pyops startproject test1

命令执行完成之后,会在当前目录创建一个[test1]目录,具体的目录结构如下:

|- test1
    |-- ah_ext
        |-- __init__.py
    |-- demo.json

接着在测试项目根目录(test1)执行如下命令运行测试:

pyops run

该命令默认会执行当前目录先全部的json用例文件,如果你希望只执行部分的json用例,则可以指定特定的文件名:

pyops run demo.jsom demo2.json

在执行完run命令后会在当前目录生成多个文件,具体的文件如下:

|- test1
    |-- ah_ext
        |-- __init__.py
    |-- demo.json
    |-- demo.py
    |-- pytest.ini
    |-- report.html
    |-- std.log

其中demo.py是由json文件生成的同名用例文件,这个是执行测试流程中的产物,也是执行测试的真正入口点。 report.html是测试报告,std.log则是测试的详细日志,pytest.ini自动生成的pytest配置文件。

如果你希望单独生成一个py用例文件,可以使用下面的命令:

pyops make demo.json

json文件中还可以对case配置disable字段,为true时则不会执行,不填时默认为false。 如果希望强制运行disable为true的用例,可以使用forcerun命令。

pyops forcerun

当然,你也可以通过原生的pytest命令来执行,前提是已经通过make、run命令生成了py文件。比如:

pytest demo.py::test_cls_name::test_case_name -s -v --force_run --pytest_report report.html

其中-s、-v是pytest原生的参数,–force_run是pyops插件参数,–pytest_report则是PyTestReport插件参数。

☤ 框架设计结构

https://raw.githubusercontent.com/five3/pyops/master/images/apic.png

☤ 自动生成用例说明

自动生成的demo.json测试用例内容如下:

{
    "name": "TestDemo",
    "desc": ".....background......",
    "tag": "smoking_test",
    "setup_class": [],
    "teardown_class": [],
    "setup": [],
    "teardown": [],
    "cases": {
        "test_add": {
            "desc": "",
            "tags": [],
            "data": {
                "x": 2,
                "y": 3,
                "expect": 5
            },
            "flow": ["调用add"],
            "check": ["检查add"]
        }
    }
}

自动生成的``ah_ext.__init__.py``文件内容如下:

import logging
from pyops.decorator import (make_check, make_flow, alias)

logger = logging.getLogger()

def add(x, y):
    print('add')
    return x + y

@alias('调用add')
@make_flow
def call_add(data):
    """
        data: 即json配置文件中的case节点下对应data字典对象
    """
    data['actual'] = add(data['x'], data['y'])

@alias('检查add')
@make_check
def check_add(data):
    """
        data: 即json配置文件中的case节点下对应data字典对象
    """
    return data['actual'] == data['expect']

Release files for py-ops 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-ops 0.1.4
File Size Uploaded
py-ops-0.1.4.tar.gz 10.0 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for py-ops 0.1.4
File Interpreter ABI Platform
py_ops-0.1.4-py3.7.egg Legacy Egg format - - Details
py_ops-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 45.7 kB

Release files / py-ops-0.1.4.tar.gz

Download URL py-ops-0.1.4.tar.gz
Size 10.0 kB
Tags Source
SHA-256 checksum
How to use checksums
6c527db79cde68deec473078910e69ed08ad0a796b767bd259e490c7561f280b
BLAKE2b-256 checksum
How to use checksums
2e42b902577e562ea49f73770a3ba11ad9fd5aaae27f7fc885d23cc682e23755
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.20.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

Release files / py_ops-0.1.4-py3.7.egg

Download URL py_ops-0.1.4-py3.7.egg
Size 23.5 kB
Tags Egg
SHA-256 checksum
How to use checksums
8338ddee3ff642ae4c8cc3627f87ed63b9d11813fcd890c4dd49dec038879a74
BLAKE2b-256 checksum
How to use checksums
5ffc6c4781f5138602680a50652673caf74d0e62b896748ea7add5f2f10a59b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.20.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

Release files / py_ops-0.1.4-py3-none-any.whl

Download URL py_ops-0.1.4-py3-none-any.whl
Size 12.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a7027531aea695d6904f3cccafaaf99c5a873f064fc26dc1d20b3727e9899a9
BLAKE2b-256 checksum
How to use checksums
635792701cbf3f3edf8c535b1fabc510462f81784a56e17c56154ce9c730df1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.20.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

Release history Release notifications | RSS feed

This release

0.1.4 This release

3 release files

0.1.3

3 release files

0.1.2

2 release files

0.1.1

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page