No project description provided
Project description
[![Build Status](https://travis-ci.org/okorolev/pytest-ast-transformer.svg?branch=master)](https://travis-ci.org/okorolev/pytest-ast-transformer)
[![image](https://img.shields.io/pypi/v/pytest-ast-transformer.svg)](https://pypi.org/project/pytest-ast-transformer/)
## About
AST Transformer integrated with py.test.
Useful for debug, refactoring, 'clean asserts' (see [examples/replace_asserts](examples/replace_asserts))
Support options
---------------
| Options | Description |
| ----------- | ----------- |
| `--show-code` | show generated code |
| `--disable-transforms` | disable all ast transformers |
## Install
```bash
pip install pytest-ast-transformer
```
## Usage
* Write ast transformer
```python
# transformer.py
import ast
from pytest_ast_transformer.ast_transformer import PytestTransformer
def my_assert(test_result, msg=''):
print(f'my assert: {test_result} {msg}')
assert test_result, msg
class AssertTransformer(PytestTransformer):
context = {
'my_assert': my_assert
}
def visit_Assert(self, node: ast.Assert) -> ast.Expr:
func_name = ast.Name(id='my_assert', ctx=ast.Load())
call_func = ast.Call(func=func_name, args=[node.test, node.msg], keywords=[])
expr = ast.Expr(value=call_func)
return ast.fix_missing_locations(expr)
```
* Register new ast transformer
```python
# conftest.py
from pytest_ast_transformer.ast_manager import ASTManager
from tests.transformer import AssertTransformer
def pytest_register_ast_transformer(ast_manager: ASTManager):
ast_manager.add_transformer(AssertTransformer())
```
[![image](https://img.shields.io/pypi/v/pytest-ast-transformer.svg)](https://pypi.org/project/pytest-ast-transformer/)
## About
AST Transformer integrated with py.test.
Useful for debug, refactoring, 'clean asserts' (see [examples/replace_asserts](examples/replace_asserts))
Support options
---------------
| Options | Description |
| ----------- | ----------- |
| `--show-code` | show generated code |
| `--disable-transforms` | disable all ast transformers |
## Install
```bash
pip install pytest-ast-transformer
```
## Usage
* Write ast transformer
```python
# transformer.py
import ast
from pytest_ast_transformer.ast_transformer import PytestTransformer
def my_assert(test_result, msg=''):
print(f'my assert: {test_result} {msg}')
assert test_result, msg
class AssertTransformer(PytestTransformer):
context = {
'my_assert': my_assert
}
def visit_Assert(self, node: ast.Assert) -> ast.Expr:
func_name = ast.Name(id='my_assert', ctx=ast.Load())
call_func = ast.Call(func=func_name, args=[node.test, node.msg], keywords=[])
expr = ast.Expr(value=call_func)
return ast.fix_missing_locations(expr)
```
* Register new ast transformer
```python
# conftest.py
from pytest_ast_transformer.ast_manager import ASTManager
from tests.transformer import AssertTransformer
def pytest_register_ast_transformer(ast_manager: ASTManager):
ast_manager.add_transformer(AssertTransformer())
```
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
Built Distribution
Close
Hashes for pytest-ast-transformer-1.0.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 346f5d6a2500449099c68c3f35ea7965525d3d52012089ddda565babb99246a8 |
|
MD5 | a5e26a7a135c26bdea3778d3ecd6d4a3 |
|
BLAKE2b-256 | 8f4f72599150a0542d56027036f9ce3eb649ed899b4d080c9f9715762d537674 |
Close
Hashes for pytest_ast_transformer-1.0.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 526d8a24b148f303ac2eae85308141fe85a13077afdc9ecbfeec7b74e91f4072 |
|
MD5 | b9e251c1d24866beb41a7be781300af1 |
|
BLAKE2b-256 | 0f6ce10d21f512016ed4b8795dcced850e3afedb83a6af0865f044601dd9ed0b |