1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
# pytest-resource-path
[](https://github.com/yukihiko-shinoda/pytest-resource-path/actions?query=workflow%3ATest)
[](https://codeclimate.com/github/yukihiko-shinoda/pytest-resource-path/test_coverage)
[](https://codeclimate.com/github/yukihiko-shinoda/pytest-resource-path/maintainability)
[](https://codeclimate.com/github/yukihiko-shinoda/pytest-resource-path)
[](https://pyup.io/repos/github/yukihiko-shinoda/pytest-resource-path/)
[](https://pypi.org/project/pytest-resource-path)
[](https://pypi.org/project/pytest-resource-path)
[](http://twitter.com/share?text=pytest-resource-path&url=https://pypi.org/project/pytest-resource-path/&hashtags=python)
Provides path for uniform access to test resources in isolated directory
## Features
### Let's isolate test resources from test code
The test which use test resource is not so many.
If we place test resource with test code, these resources will fill the display area of explorer. Wouldn't it be more productive if the files or directories which is not related with almost tests wasn't usually displayed?
**pytest-resource-path** provides path for uniform access to test resources in isolated directory.
This pytest plugin assumes that test resource is placed under `testresources` directory directly under `tests`. (Don't worry, you can customize these directory names by `pytest.ini`)
```bash
tests/
+-- some_test_package/
| +-- some_test_module.py
+-- testresources/
+-- some_test_package/
+-- some_test_module/
```
## Installation
You can install "pytest-resource-path" via [pip] from [PyPI]:
```console
pip install pytest-resource-path
```
## Usage
### Basic
You can use fixture `resource_path` which is pathlib.Path instance (**absolte path**).
```python
def test_method(resource_path):
text_test_resource = (resource_path / 'test_resource.txt').read_text()
```
When assume that above `test_method` is in `tests/some_tests_package_some_test_module.py`, you have to place `test_resource.txt` following directory:
```bash
tests/
+-- some_test_package/
| +-- some_test_module.py
+-- testresources/
+-- some_test_package/
+-- some_test_module/
+-- test_method/
+-- test_resource.txt
```
If you want to omit directory per method, you can do:
```python
def test_method(resource_path):
text_test_resource = Path(f'{resource_path}.txt').read_text()
```
Note that the class name is not used in the path since It felt redundant in design.
### Get path to test resources root directory
You can use fixture `resource_path_root` which is pathlib.Path instance (**absolte path**) pointing to `testresources`.
```python
def test_method(resource_path_root):
text_test_resource = (resource_path_root / 'test_resource.txt').read_text()
```
```bash
tests/
+-- some_test_package/
| +-- some_test_module.py
+-- testresources/
+-- test_resource.txt
```
This fixture may be your help duaring migration period of directory structure.
Or, may be usiful to preapare common directory with some of tests.
```python
def test_method(resource_path_root):
text_test_resource = (resource_path_root / 'common/test_resource.txt').read_text()
```
```bash
tests/
+-- some_test_package/
| +-- some_test_module.py
+-- testresources/
+-- common/
+-- test_resource.txt
```
### How to customize directory names
To traverse directory structure, this plugin requires to fix directory names.
By default:
directory|requires to be named
---|---
Root directory of tests|`tests`
Root directory of test resources|`testresources`
You can customize these required names by `pytest.ini`
Ex:
```ini
[pytest]
resource-path.directory-name-tests = integrationtests
resource-path.directory-name-test-resources = data
```
Above customize fits following directory strucure:
```bash
integrationtests/
+-- some_test_package/
| +-- some_test_module.py
+-- data/
+-- some_test_package/
+-- some_test_module/
```
## License
Distributed under the terms of the [MIT] license, "pytest-resource-path" is free and open source software
## Issues
If you encounter any problems, please [file an issue] along with a detailed description.
## Contributing
Contributions are very welcome.
Please ensure the coverage at least stays the same before you submit a pull request.
## Credits
This [pytest] plugin was generated with [Cookiecutter] along with [@hackebrot]'s [cookiecutter-pytest-plugin] template.
[Cookiecutter]: https://github.com/audreyr/cookiecutter
[@hackebrot]: https://github.com/hackebrot
[MIT]: http://opensource.org/licenses/MIT
[cookiecutter-pytest-plugin]: https://github.com/pytest-dev/cookiecutter-pytest-plugin
[file an issue]: https://github.com/yukihiko-shinoda/pytest-resource-path/issues
[pytest]: https://github.com/pytest-dev/pytest
[pip]: https://pypi.org/project/pip/
[PyPI]: https://pypi.org/project
|