diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-pytest-httpserver.spec | 454 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 456 insertions, 0 deletions
@@ -0,0 +1 @@ +/pytest_httpserver-1.0.6.tar.gz diff --git a/python-pytest-httpserver.spec b/python-pytest-httpserver.spec new file mode 100644 index 0000000..8dc2396 --- /dev/null +++ b/python-pytest-httpserver.spec @@ -0,0 +1,454 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pytest-httpserver +Version: 1.0.6 +Release: 1 +Summary: pytest-httpserver is a httpserver for pytest +License: MIT +URL: https://github.com/csernazs/pytest-httpserver +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/27/7b/3f5bdca6a6732fd02f5bd61ed6a7971c76db422ed2a93b61111bfa1dac43/pytest_httpserver-1.0.6.tar.gz +BuildArch: noarch + +Requires: python3-Werkzeug + +%description +[](https://github.com/csernazs/pytest-httpserver/actions?query=workflow%3Abuild+branch%3Amaster) +[](https://pytest-httpserver.readthedocs.io/en/latest/?badge=latest) + [](https://opensource.org/licenses/MIT) +[](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=K6PU3AGBZW4QC&item_name=pytest-httpserver¤cy_code=EUR&source=url) +[](https://codecov.io/gh/csernazs/pytest-httpserver) +[](https://github.com/psf/black) + +## pytest_httpserver + +HTTP server for pytest + + +### Nutshell + +This library is designed to help to test http clients without contacting the real http server. +In other words, it is a fake http server which is accessible via localhost can be started with +the pre-defined expected http requests and their responses. + +### Example + +#### Handling a simple GET request +```python +def test_my_client( + httpserver, +): # httpserver is a pytest fixture which starts the server + # set up the server to serve /foobar with the json + httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"}) + # check that the request is served + assert requests.get(httpserver.url_for("/foobar")).json() == {"foo": "bar"} +``` + +#### Handing a POST request with an expected json body +```python +def test_json_request( + httpserver, +): # httpserver is a pytest fixture which starts the server + # set up the server to serve /foobar with the json + httpserver.expect_request( + "/foobar", method="POST", json={"id": 12, "name": "foo"} + ).respond_with_json({"foo": "bar"}) + # check that the request is served + assert requests.post( + httpserver.url_for("/foobar"), json={"id": 12, "name": "foo"} + ).json() == {"foo": "bar"} +``` + + +You can also use the library without pytest. There's a with statement to ensure that the server is stopped. + + +```python +with HTTPServer() as httpserver: + # set up the server to serve /foobar with the json + httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"}) + # check that the request is served + print(requests.get(httpserver.url_for("/foobar")).json()) +``` + +### Documentation + +Please find the API documentation at https://pytest-httpserver.readthedocs.io/en/latest/. + +### Features + +You can set up a dozen of expectations for the requests, and also what response should be sent by the server to the client. + + +#### Requests + +There are three different types: + +- **permanent**: this will be always served when there's match for this request, you can make as many HTTP requests as you want +- **oneshot**: this will be served only once when there's a match for this request, you can only make 1 HTTP request +- **ordered**: same as oneshot but the order must be strictly matched to the order of setting up + +You can also fine-tune the expected request. The following can be specified: + +- URI (this is a must) +- HTTP method +- headers +- query string +- data (HTTP body of the request) +- JSON (HTTP body loaded as JSON) + + +#### Responses + +Once you have the expectations for the request set up, you should also define the response you want to send back. +The following is supported currently: + +- respond arbitrary data (string or bytearray) +- respond a json (a python dict converted in-place to json) +- respond a Response object of werkzeug +- use your own function + +Similar to requests, you can fine-tune what response you want to send: + +- HTTP status +- headers +- data + + +#### Behave support + +Using the `BlockingHTTPServer` class, the assertion for a request and the +response can be performed in real order. For more info, see the +[test](tests/test_blocking_httpserver.py), the +[howto](https://pytest-httpserver.readthedocs.io/en/latest/howto.html#running-httpserver-in-blocking-mode) +and the [API +documentation](https://pytest-httpserver.readthedocs.io/en/latest/api.html#blockinghttpserver). + + +### Missing features +* HTTP/2 +* Keepalive +* ~~TLS~~ + +### Donation + +If you want to donate to this project, you can find the donate button at the top +of the README. + +Currently, this project is based heavily on werkzeug. Werkzeug does all the heavy lifting +behind the scenes, parsing HTTP request and defining Request and Response objects, which +are currently transparent in the API. + +If you wish to donate, please consider donating to them: https://palletsprojects.com/donate + + +%package -n python3-pytest-httpserver +Summary: pytest-httpserver is a httpserver for pytest +Provides: python-pytest-httpserver +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pytest-httpserver +[](https://github.com/csernazs/pytest-httpserver/actions?query=workflow%3Abuild+branch%3Amaster) +[](https://pytest-httpserver.readthedocs.io/en/latest/?badge=latest) + [](https://opensource.org/licenses/MIT) +[](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=K6PU3AGBZW4QC&item_name=pytest-httpserver¤cy_code=EUR&source=url) +[](https://codecov.io/gh/csernazs/pytest-httpserver) +[](https://github.com/psf/black) + +## pytest_httpserver + +HTTP server for pytest + + +### Nutshell + +This library is designed to help to test http clients without contacting the real http server. +In other words, it is a fake http server which is accessible via localhost can be started with +the pre-defined expected http requests and their responses. + +### Example + +#### Handling a simple GET request +```python +def test_my_client( + httpserver, +): # httpserver is a pytest fixture which starts the server + # set up the server to serve /foobar with the json + httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"}) + # check that the request is served + assert requests.get(httpserver.url_for("/foobar")).json() == {"foo": "bar"} +``` + +#### Handing a POST request with an expected json body +```python +def test_json_request( + httpserver, +): # httpserver is a pytest fixture which starts the server + # set up the server to serve /foobar with the json + httpserver.expect_request( + "/foobar", method="POST", json={"id": 12, "name": "foo"} + ).respond_with_json({"foo": "bar"}) + # check that the request is served + assert requests.post( + httpserver.url_for("/foobar"), json={"id": 12, "name": "foo"} + ).json() == {"foo": "bar"} +``` + + +You can also use the library without pytest. There's a with statement to ensure that the server is stopped. + + +```python +with HTTPServer() as httpserver: + # set up the server to serve /foobar with the json + httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"}) + # check that the request is served + print(requests.get(httpserver.url_for("/foobar")).json()) +``` + +### Documentation + +Please find the API documentation at https://pytest-httpserver.readthedocs.io/en/latest/. + +### Features + +You can set up a dozen of expectations for the requests, and also what response should be sent by the server to the client. + + +#### Requests + +There are three different types: + +- **permanent**: this will be always served when there's match for this request, you can make as many HTTP requests as you want +- **oneshot**: this will be served only once when there's a match for this request, you can only make 1 HTTP request +- **ordered**: same as oneshot but the order must be strictly matched to the order of setting up + +You can also fine-tune the expected request. The following can be specified: + +- URI (this is a must) +- HTTP method +- headers +- query string +- data (HTTP body of the request) +- JSON (HTTP body loaded as JSON) + + +#### Responses + +Once you have the expectations for the request set up, you should also define the response you want to send back. +The following is supported currently: + +- respond arbitrary data (string or bytearray) +- respond a json (a python dict converted in-place to json) +- respond a Response object of werkzeug +- use your own function + +Similar to requests, you can fine-tune what response you want to send: + +- HTTP status +- headers +- data + + +#### Behave support + +Using the `BlockingHTTPServer` class, the assertion for a request and the +response can be performed in real order. For more info, see the +[test](tests/test_blocking_httpserver.py), the +[howto](https://pytest-httpserver.readthedocs.io/en/latest/howto.html#running-httpserver-in-blocking-mode) +and the [API +documentation](https://pytest-httpserver.readthedocs.io/en/latest/api.html#blockinghttpserver). + + +### Missing features +* HTTP/2 +* Keepalive +* ~~TLS~~ + +### Donation + +If you want to donate to this project, you can find the donate button at the top +of the README. + +Currently, this project is based heavily on werkzeug. Werkzeug does all the heavy lifting +behind the scenes, parsing HTTP request and defining Request and Response objects, which +are currently transparent in the API. + +If you wish to donate, please consider donating to them: https://palletsprojects.com/donate + + +%package help +Summary: Development documents and examples for pytest-httpserver +Provides: python3-pytest-httpserver-doc +%description help +[](https://github.com/csernazs/pytest-httpserver/actions?query=workflow%3Abuild+branch%3Amaster) +[](https://pytest-httpserver.readthedocs.io/en/latest/?badge=latest) + [](https://opensource.org/licenses/MIT) +[](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=K6PU3AGBZW4QC&item_name=pytest-httpserver¤cy_code=EUR&source=url) +[](https://codecov.io/gh/csernazs/pytest-httpserver) +[](https://github.com/psf/black) + +## pytest_httpserver + +HTTP server for pytest + + +### Nutshell + +This library is designed to help to test http clients without contacting the real http server. +In other words, it is a fake http server which is accessible via localhost can be started with +the pre-defined expected http requests and their responses. + +### Example + +#### Handling a simple GET request +```python +def test_my_client( + httpserver, +): # httpserver is a pytest fixture which starts the server + # set up the server to serve /foobar with the json + httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"}) + # check that the request is served + assert requests.get(httpserver.url_for("/foobar")).json() == {"foo": "bar"} +``` + +#### Handing a POST request with an expected json body +```python +def test_json_request( + httpserver, +): # httpserver is a pytest fixture which starts the server + # set up the server to serve /foobar with the json + httpserver.expect_request( + "/foobar", method="POST", json={"id": 12, "name": "foo"} + ).respond_with_json({"foo": "bar"}) + # check that the request is served + assert requests.post( + httpserver.url_for("/foobar"), json={"id": 12, "name": "foo"} + ).json() == {"foo": "bar"} +``` + + +You can also use the library without pytest. There's a with statement to ensure that the server is stopped. + + +```python +with HTTPServer() as httpserver: + # set up the server to serve /foobar with the json + httpserver.expect_request("/foobar").respond_with_json({"foo": "bar"}) + # check that the request is served + print(requests.get(httpserver.url_for("/foobar")).json()) +``` + +### Documentation + +Please find the API documentation at https://pytest-httpserver.readthedocs.io/en/latest/. + +### Features + +You can set up a dozen of expectations for the requests, and also what response should be sent by the server to the client. + + +#### Requests + +There are three different types: + +- **permanent**: this will be always served when there's match for this request, you can make as many HTTP requests as you want +- **oneshot**: this will be served only once when there's a match for this request, you can only make 1 HTTP request +- **ordered**: same as oneshot but the order must be strictly matched to the order of setting up + +You can also fine-tune the expected request. The following can be specified: + +- URI (this is a must) +- HTTP method +- headers +- query string +- data (HTTP body of the request) +- JSON (HTTP body loaded as JSON) + + +#### Responses + +Once you have the expectations for the request set up, you should also define the response you want to send back. +The following is supported currently: + +- respond arbitrary data (string or bytearray) +- respond a json (a python dict converted in-place to json) +- respond a Response object of werkzeug +- use your own function + +Similar to requests, you can fine-tune what response you want to send: + +- HTTP status +- headers +- data + + +#### Behave support + +Using the `BlockingHTTPServer` class, the assertion for a request and the +response can be performed in real order. For more info, see the +[test](tests/test_blocking_httpserver.py), the +[howto](https://pytest-httpserver.readthedocs.io/en/latest/howto.html#running-httpserver-in-blocking-mode) +and the [API +documentation](https://pytest-httpserver.readthedocs.io/en/latest/api.html#blockinghttpserver). + + +### Missing features +* HTTP/2 +* Keepalive +* ~~TLS~~ + +### Donation + +If you want to donate to this project, you can find the donate button at the top +of the README. + +Currently, this project is based heavily on werkzeug. Werkzeug does all the heavy lifting +behind the scenes, parsing HTTP request and defining Request and Response objects, which +are currently transparent in the API. + +If you wish to donate, please consider donating to them: https://palletsprojects.com/donate + + +%prep +%autosetup -n pytest-httpserver-1.0.6 + +%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-pytest-httpserver -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.6-1 +- Package Spec generated @@ -0,0 +1 @@ +8d68790bf99e223fde4f6cdd3815dcb4 pytest_httpserver-1.0.6.tar.gz |
