diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-rigor.spec | 600 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 602 insertions, 0 deletions
@@ -0,0 +1 @@ +/rigor-0.7.5.tar.gz diff --git a/python-rigor.spec b/python-rigor.spec new file mode 100644 index 0000000..907dd32 --- /dev/null +++ b/python-rigor.spec @@ -0,0 +1,600 @@ +%global _empty_manifest_terminate_build 0 +Name: python-rigor +Version: 0.7.5 +Release: 1 +Summary: rigor +License: MIT license +URL: https://github.com/genomoncology/rigor +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/a8/cd/2e17a450b807cd5c917a1c2837c2fd705bcf1f6b838cafae6c9cdcf83e25/rigor-0.7.5.tar.gz +BuildArch: noarch + +Requires: python3-addict +Requires: python3-aiofiles +Requires: python3-beautifulsoup4 +Requires: python3-click +Requires: python3-colorama +Requires: python3-httpx +Requires: python3-hyperlink +Requires: python3-importlib-metadata +Requires: python3-jmespath +Requires: python3-related +Requires: python3-structlog +Requires: python3-xlwt + +%description +`Rigor` is a Domain Specific Language (DSL) and Command Line Interface (CLI) +for making HTTP requests, extracting data, and validating responses. The main +intent of Rigor is to be an HTTP-based API (e.g. REST) Testing Framework for +automated functional or integration testing. + +<a href='https://codecov.io/github/genomoncology/rigor/'><img src='https://codecov.io/github/genomoncology/rigor/branch/master/graph/badge.svg' align="right" /></a> +<a href='https://pypi.python.org/pypi/rigor'><img src='https://img.shields.io/pypi/v/rigor.svg' align="right" /></a> + +<br/> + + +# Requirements + +* Python 3.6 + + +# Installation + +Install using `pip3`... + + pip3 install rigor + + +# Feature List + + +* Functional testing without the need to write glue code. (e.g. Cucumber) +* Runs in either synchronous ([requests]) or asynchronous ([aiohttp]) mode. +* YAML-based format for Test Case files for easy test creation and maintenance. +* Response transformation using [jmespath.py] to reduce test fragility. +* Pretty HTML test execution reports using [cucumber-sandwich]. +* [Swagger] path coverage report to ensure API surface area coverage. +* Syntax highlighted console or JSON-based logging using [structlog]. +* Profiles for switching between different environments and settings. +* Tags and CLI options for selectively executing subsets of the test suite. +* Scenario Outlines (i.e. Tables) for cases with numerous scenarios. +* Beautiful Soup parsing for extraction from HTML data. +* Proper error code ($?) on suite success (0) or failure (!0) +* Case-scenario unique identifier (__uuid__) for managing session and race conditions. + + +# Command Line Interface (CLI) Options + + $ rigor --help + Usage: rigor [OPTIONS] [PATHS]... + + Options: + --profile TEXT Profile name (e.g. test) + --host TEXT Host name (e.g. http://localhost:8000) + -i, --includes TEXT Include tag of cases. (e.g. smoke) + -e, --excludes TEXT Exclude tag of cases to run. (e.g. broken) + -p, --prefixes TEXT Filter cases by file prefix. (e.g. smoke_) + -e, --extensions TEXT Filter cases by file extension. (e.g. rigor) + -c, --concurrency INTEGER # of concurrent HTTP requests. (default: 5) + -o, --output TEXT Report output folder. + -q, --quiet Run in quiet mode. (warning/critical level only) + -v, --verbose Run in verbose mode. (debug level logging) + -j, --json JSON-style logging. + -h, --html Generate HTML report. + -g, --coverage Generate Coverage report. + -r, --retries INTEGER # of retries for GET calls only. (default: 0) + -s, --sleep INTEGER Retry sleep (seconds multiplied by retry). + (default: 60) + -f, --retry_failed Retries all failed scenarios at the end. + --version Logs current version and exits. + --help Show this message and exit. + +# Simple Example + + (rigor) /p/tmp> cat test.rigor + name: Simple case. + + steps: + - description: Simple step. + request: + host: https://httpbin.org + path: get + + (rigor) /p/tmp> rigor test.rigor --html + 2018-02-08 13:18.06 [info ] no config file not found [rigor] paths=('test.rigor',) + 2018-02-08 13:18.06 [info ] collecting tests [rigor] cwd=/private/tmp paths=['test.rigor'] + 2018-02-08 13:18.06 [info ] tests collected [rigor] queued=1 skipped=0 + 2018-02-08 13:18.06 [info ] execute suite complete [rigor] failed=0 passed=1 timer=0.119s + 2018-02-08 13:18.07 [info ] launching browser [rigor] report_path=/var/folders/b_/2hlrn_7930x81r009mfzl50m0000gn/T/tmps_8d7nn_/html-2018-02-08-08-18-06/cucumber-html-reports/cucumber-html-reports/overview-features.html + +![list] + +![detail] + + +# Object Model + +* suite: set of cases that gets built dynamically based on cli arguments. +* case: set of scenarios and steps in a .rigor file. +* scenario: namespace for 1 run of case steps. +* step: request with response extract, validate, etc. +* iterate: repeats an individual step by iterating through iterable. +* request: http call (get, post, etc.) to path with parameters, data, or uploads +* extract: extract nested data from a response into a variable available to following steps. +* validate: check an actual value against an expected value using a comparator. +* transform: using [jmespath] to shape a JSON response into a specific format. + +![objects] + + +# Comparators + +Comparators are used by the validation phase of each step to check whether +an actual value is returning as expected. See the [comparisons.rigor] example +for more details. + +* equals +* not equals +* same +* not same +* greater than +* less than +* greater than or equals +* less than or equals +* type +* in +* not in +* regex +* subset +* not subset +* length +* superset +* not superset +* keyset +* not keyset +* contains +* not contains + + +# Related Projects + +* [Tavern] is an extremely similar project that was released a little too late for us to use. +* [Pyresttest] was the first library we used before deciding to roll our own testing framework. +* [Click] is the library used to build out the command-line options. +* [Related] is the library used for parsing the YAML test suite into an Python object model. + + +# More Examples + +More examples can be found by reviewing the [tests/httpbin/] folder of this project. + + +# License + +The MIT License (MIT) +Copyright (c) 2017 [Ian Maurer], [Genomoncology LLC] + + +[Click]: http://click.pocoo.org/ +[PyRestTest]: https://github.com/svanoort/pyresttest/ +[Related]: https://github.com/genomoncology/related +[Swagger]: https://swagger.io/specification/ +[Tavern]: https://taverntesting.github.io/ +[aiohttp]: http://aiohttp.readthedocs.io/en/stable/ +[cucumber-sandwich]: https://github.com/damianszczepanik/cucumber-sandwich +[jmespath.py]: https://github.com/jmespath/jmespath.py +[requests]: http://docs.python-requests.org/en/master/ +[structlog]: http://www.structlog.org/en/stable/ +[tests/httpbin/]: ./tests/httpbin +[comparisons.rigor]: ./tests/httpbin/comparisons.rigor +[list]: ./.images/list.png +[detail]: ./.images/detail.png +[objects]: ./.images/objects.png +[Genomoncology LLC]: http://genomoncology.com +[Ian Maurer]: https://github.com/imaurer +[jmespath]: jmespath.org + + + +%package -n python3-rigor +Summary: rigor +Provides: python-rigor +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-rigor +`Rigor` is a Domain Specific Language (DSL) and Command Line Interface (CLI) +for making HTTP requests, extracting data, and validating responses. The main +intent of Rigor is to be an HTTP-based API (e.g. REST) Testing Framework for +automated functional or integration testing. + +<a href='https://codecov.io/github/genomoncology/rigor/'><img src='https://codecov.io/github/genomoncology/rigor/branch/master/graph/badge.svg' align="right" /></a> +<a href='https://pypi.python.org/pypi/rigor'><img src='https://img.shields.io/pypi/v/rigor.svg' align="right" /></a> + +<br/> + + +# Requirements + +* Python 3.6 + + +# Installation + +Install using `pip3`... + + pip3 install rigor + + +# Feature List + + +* Functional testing without the need to write glue code. (e.g. Cucumber) +* Runs in either synchronous ([requests]) or asynchronous ([aiohttp]) mode. +* YAML-based format for Test Case files for easy test creation and maintenance. +* Response transformation using [jmespath.py] to reduce test fragility. +* Pretty HTML test execution reports using [cucumber-sandwich]. +* [Swagger] path coverage report to ensure API surface area coverage. +* Syntax highlighted console or JSON-based logging using [structlog]. +* Profiles for switching between different environments and settings. +* Tags and CLI options for selectively executing subsets of the test suite. +* Scenario Outlines (i.e. Tables) for cases with numerous scenarios. +* Beautiful Soup parsing for extraction from HTML data. +* Proper error code ($?) on suite success (0) or failure (!0) +* Case-scenario unique identifier (__uuid__) for managing session and race conditions. + + +# Command Line Interface (CLI) Options + + $ rigor --help + Usage: rigor [OPTIONS] [PATHS]... + + Options: + --profile TEXT Profile name (e.g. test) + --host TEXT Host name (e.g. http://localhost:8000) + -i, --includes TEXT Include tag of cases. (e.g. smoke) + -e, --excludes TEXT Exclude tag of cases to run. (e.g. broken) + -p, --prefixes TEXT Filter cases by file prefix. (e.g. smoke_) + -e, --extensions TEXT Filter cases by file extension. (e.g. rigor) + -c, --concurrency INTEGER # of concurrent HTTP requests. (default: 5) + -o, --output TEXT Report output folder. + -q, --quiet Run in quiet mode. (warning/critical level only) + -v, --verbose Run in verbose mode. (debug level logging) + -j, --json JSON-style logging. + -h, --html Generate HTML report. + -g, --coverage Generate Coverage report. + -r, --retries INTEGER # of retries for GET calls only. (default: 0) + -s, --sleep INTEGER Retry sleep (seconds multiplied by retry). + (default: 60) + -f, --retry_failed Retries all failed scenarios at the end. + --version Logs current version and exits. + --help Show this message and exit. + +# Simple Example + + (rigor) /p/tmp> cat test.rigor + name: Simple case. + + steps: + - description: Simple step. + request: + host: https://httpbin.org + path: get + + (rigor) /p/tmp> rigor test.rigor --html + 2018-02-08 13:18.06 [info ] no config file not found [rigor] paths=('test.rigor',) + 2018-02-08 13:18.06 [info ] collecting tests [rigor] cwd=/private/tmp paths=['test.rigor'] + 2018-02-08 13:18.06 [info ] tests collected [rigor] queued=1 skipped=0 + 2018-02-08 13:18.06 [info ] execute suite complete [rigor] failed=0 passed=1 timer=0.119s + 2018-02-08 13:18.07 [info ] launching browser [rigor] report_path=/var/folders/b_/2hlrn_7930x81r009mfzl50m0000gn/T/tmps_8d7nn_/html-2018-02-08-08-18-06/cucumber-html-reports/cucumber-html-reports/overview-features.html + +![list] + +![detail] + + +# Object Model + +* suite: set of cases that gets built dynamically based on cli arguments. +* case: set of scenarios and steps in a .rigor file. +* scenario: namespace for 1 run of case steps. +* step: request with response extract, validate, etc. +* iterate: repeats an individual step by iterating through iterable. +* request: http call (get, post, etc.) to path with parameters, data, or uploads +* extract: extract nested data from a response into a variable available to following steps. +* validate: check an actual value against an expected value using a comparator. +* transform: using [jmespath] to shape a JSON response into a specific format. + +![objects] + + +# Comparators + +Comparators are used by the validation phase of each step to check whether +an actual value is returning as expected. See the [comparisons.rigor] example +for more details. + +* equals +* not equals +* same +* not same +* greater than +* less than +* greater than or equals +* less than or equals +* type +* in +* not in +* regex +* subset +* not subset +* length +* superset +* not superset +* keyset +* not keyset +* contains +* not contains + + +# Related Projects + +* [Tavern] is an extremely similar project that was released a little too late for us to use. +* [Pyresttest] was the first library we used before deciding to roll our own testing framework. +* [Click] is the library used to build out the command-line options. +* [Related] is the library used for parsing the YAML test suite into an Python object model. + + +# More Examples + +More examples can be found by reviewing the [tests/httpbin/] folder of this project. + + +# License + +The MIT License (MIT) +Copyright (c) 2017 [Ian Maurer], [Genomoncology LLC] + + +[Click]: http://click.pocoo.org/ +[PyRestTest]: https://github.com/svanoort/pyresttest/ +[Related]: https://github.com/genomoncology/related +[Swagger]: https://swagger.io/specification/ +[Tavern]: https://taverntesting.github.io/ +[aiohttp]: http://aiohttp.readthedocs.io/en/stable/ +[cucumber-sandwich]: https://github.com/damianszczepanik/cucumber-sandwich +[jmespath.py]: https://github.com/jmespath/jmespath.py +[requests]: http://docs.python-requests.org/en/master/ +[structlog]: http://www.structlog.org/en/stable/ +[tests/httpbin/]: ./tests/httpbin +[comparisons.rigor]: ./tests/httpbin/comparisons.rigor +[list]: ./.images/list.png +[detail]: ./.images/detail.png +[objects]: ./.images/objects.png +[Genomoncology LLC]: http://genomoncology.com +[Ian Maurer]: https://github.com/imaurer +[jmespath]: jmespath.org + + + +%package help +Summary: Development documents and examples for rigor +Provides: python3-rigor-doc +%description help +`Rigor` is a Domain Specific Language (DSL) and Command Line Interface (CLI) +for making HTTP requests, extracting data, and validating responses. The main +intent of Rigor is to be an HTTP-based API (e.g. REST) Testing Framework for +automated functional or integration testing. + +<a href='https://codecov.io/github/genomoncology/rigor/'><img src='https://codecov.io/github/genomoncology/rigor/branch/master/graph/badge.svg' align="right" /></a> +<a href='https://pypi.python.org/pypi/rigor'><img src='https://img.shields.io/pypi/v/rigor.svg' align="right" /></a> + +<br/> + + +# Requirements + +* Python 3.6 + + +# Installation + +Install using `pip3`... + + pip3 install rigor + + +# Feature List + + +* Functional testing without the need to write glue code. (e.g. Cucumber) +* Runs in either synchronous ([requests]) or asynchronous ([aiohttp]) mode. +* YAML-based format for Test Case files for easy test creation and maintenance. +* Response transformation using [jmespath.py] to reduce test fragility. +* Pretty HTML test execution reports using [cucumber-sandwich]. +* [Swagger] path coverage report to ensure API surface area coverage. +* Syntax highlighted console or JSON-based logging using [structlog]. +* Profiles for switching between different environments and settings. +* Tags and CLI options for selectively executing subsets of the test suite. +* Scenario Outlines (i.e. Tables) for cases with numerous scenarios. +* Beautiful Soup parsing for extraction from HTML data. +* Proper error code ($?) on suite success (0) or failure (!0) +* Case-scenario unique identifier (__uuid__) for managing session and race conditions. + + +# Command Line Interface (CLI) Options + + $ rigor --help + Usage: rigor [OPTIONS] [PATHS]... + + Options: + --profile TEXT Profile name (e.g. test) + --host TEXT Host name (e.g. http://localhost:8000) + -i, --includes TEXT Include tag of cases. (e.g. smoke) + -e, --excludes TEXT Exclude tag of cases to run. (e.g. broken) + -p, --prefixes TEXT Filter cases by file prefix. (e.g. smoke_) + -e, --extensions TEXT Filter cases by file extension. (e.g. rigor) + -c, --concurrency INTEGER # of concurrent HTTP requests. (default: 5) + -o, --output TEXT Report output folder. + -q, --quiet Run in quiet mode. (warning/critical level only) + -v, --verbose Run in verbose mode. (debug level logging) + -j, --json JSON-style logging. + -h, --html Generate HTML report. + -g, --coverage Generate Coverage report. + -r, --retries INTEGER # of retries for GET calls only. (default: 0) + -s, --sleep INTEGER Retry sleep (seconds multiplied by retry). + (default: 60) + -f, --retry_failed Retries all failed scenarios at the end. + --version Logs current version and exits. + --help Show this message and exit. + +# Simple Example + + (rigor) /p/tmp> cat test.rigor + name: Simple case. + + steps: + - description: Simple step. + request: + host: https://httpbin.org + path: get + + (rigor) /p/tmp> rigor test.rigor --html + 2018-02-08 13:18.06 [info ] no config file not found [rigor] paths=('test.rigor',) + 2018-02-08 13:18.06 [info ] collecting tests [rigor] cwd=/private/tmp paths=['test.rigor'] + 2018-02-08 13:18.06 [info ] tests collected [rigor] queued=1 skipped=0 + 2018-02-08 13:18.06 [info ] execute suite complete [rigor] failed=0 passed=1 timer=0.119s + 2018-02-08 13:18.07 [info ] launching browser [rigor] report_path=/var/folders/b_/2hlrn_7930x81r009mfzl50m0000gn/T/tmps_8d7nn_/html-2018-02-08-08-18-06/cucumber-html-reports/cucumber-html-reports/overview-features.html + +![list] + +![detail] + + +# Object Model + +* suite: set of cases that gets built dynamically based on cli arguments. +* case: set of scenarios and steps in a .rigor file. +* scenario: namespace for 1 run of case steps. +* step: request with response extract, validate, etc. +* iterate: repeats an individual step by iterating through iterable. +* request: http call (get, post, etc.) to path with parameters, data, or uploads +* extract: extract nested data from a response into a variable available to following steps. +* validate: check an actual value against an expected value using a comparator. +* transform: using [jmespath] to shape a JSON response into a specific format. + +![objects] + + +# Comparators + +Comparators are used by the validation phase of each step to check whether +an actual value is returning as expected. See the [comparisons.rigor] example +for more details. + +* equals +* not equals +* same +* not same +* greater than +* less than +* greater than or equals +* less than or equals +* type +* in +* not in +* regex +* subset +* not subset +* length +* superset +* not superset +* keyset +* not keyset +* contains +* not contains + + +# Related Projects + +* [Tavern] is an extremely similar project that was released a little too late for us to use. +* [Pyresttest] was the first library we used before deciding to roll our own testing framework. +* [Click] is the library used to build out the command-line options. +* [Related] is the library used for parsing the YAML test suite into an Python object model. + + +# More Examples + +More examples can be found by reviewing the [tests/httpbin/] folder of this project. + + +# License + +The MIT License (MIT) +Copyright (c) 2017 [Ian Maurer], [Genomoncology LLC] + + +[Click]: http://click.pocoo.org/ +[PyRestTest]: https://github.com/svanoort/pyresttest/ +[Related]: https://github.com/genomoncology/related +[Swagger]: https://swagger.io/specification/ +[Tavern]: https://taverntesting.github.io/ +[aiohttp]: http://aiohttp.readthedocs.io/en/stable/ +[cucumber-sandwich]: https://github.com/damianszczepanik/cucumber-sandwich +[jmespath.py]: https://github.com/jmespath/jmespath.py +[requests]: http://docs.python-requests.org/en/master/ +[structlog]: http://www.structlog.org/en/stable/ +[tests/httpbin/]: ./tests/httpbin +[comparisons.rigor]: ./tests/httpbin/comparisons.rigor +[list]: ./.images/list.png +[detail]: ./.images/detail.png +[objects]: ./.images/objects.png +[Genomoncology LLC]: http://genomoncology.com +[Ian Maurer]: https://github.com/imaurer +[jmespath]: jmespath.org + + + +%prep +%autosetup -n rigor-0.7.5 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-rigor -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 0.7.5-1 +- Package Spec generated @@ -0,0 +1 @@ +de3042e1ecca319351ed7e469acbf869 rigor-0.7.5.tar.gz |