# Test PYSON statement

**URL:** <https://discuss.tryton.org/t/test-pyson-statement/2739>\
**Category:** Developer\
**Created:** [May 19, 2020, 4:40pm UTC](https://discuss.tryton.org/t/test-pyson-statement/2739 "2020-05-19T16:40:59Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![2cadz](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/2cadz/32/130_2.png) [@2cadz](https://discuss.tryton.org/u/2cadz)\
**Post date:** [May 19, 2020, 4:40pm UTC](https://discuss.tryton.org/t/test-pyson-statement/2739/1 "2020-05-19T16:40:59Z")

</div>

Hello

Is there way to test some PYSON statement with proteus or `tryton-console`?  
An example somewhere?

regards.

---

<div class="post-metadata">

**Author:** ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)\
**Post date:** [May 20, 2020, 10:52am UTC](https://discuss.tryton.org/t/test-pyson-statement/2739/2 "2020-05-20T10:52:11Z")

</div>

What do you want to test?

---

<div class="post-metadata">

**Author:** ![2cadz](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/2cadz/32/130_2.png) [@2cadz](https://discuss.tryton.org/u/2cadz)\
**Post date:** [May 20, 2020, 12:01pm UTC](https://discuss.tryton.org/t/test-pyson-statement/2739/3 "2020-05-20T12:01:57Z")

</div>

Domain statement for example : If my writing are correct and understand why if it not correct

---

<div class="post-metadata">

**Author:** ![ced](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/ced/32/1237_2.png) [@ced](https://discuss.tryton.org/u/ced)\
**Post date:** [May 20, 2020, 3:18pm UTC](https://discuss.tryton.org/t/test-pyson-statement/2739/4 "2020-05-20T15:18:49Z")

</div>

If it compiles, it is valid.

---

<div class="post-metadata">

**Author:** ![nicoe](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/nicoe/32/2880_2.png) [@nicoe](https://discuss.tryton.org/u/nicoe)\
**Post date:** [May 20, 2020, 4:15pm UTC](https://discuss.tryton.org/t/test-pyson-statement/2739/5 "2020-05-20T16:15:21Z")

</div>

> [@ced](#):
>
> it is valid

It might be valid but not correct for the purpose intended 🙂

> [@2cadz](#):
>
> `tryton-console`

Here’s a quick session I did that checks an expression against a record

```python
>>> from trytond.pyson import Eval, PYSONEncoder, PYSONDecoder
>>> from trytond.model.modelstorage import EvalEnvironment
>>> Party = pool.get('party.party')
>>> a = Party(1)
>>> env = EvalEnvironment(a, Party)
>>> b = Eval('name') == 'test'
>>> PYSONDecoder(env).decode(PYSONEncoder().encode(b))
False

```

---

<div class="post-metadata">

**Author:** ![2cadz](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/2cadz/32/130_2.png) [@2cadz](https://discuss.tryton.org/u/2cadz)\
**Post date:** [May 20, 2020, 5:42pm UTC](https://discuss.tryton.org/t/test-pyson-statement/2739/6 "2020-05-20T17:42:07Z")

</div>

I was almost there, I was just missing the `EvalEnvironment`, thank you @nicoe.

---

<div class="post-metadata">

**Author:** ![system](https://discuss-cdn.tryton.org/uploads/default/original/1X/c6f8ec0a40525cdcd50058c734283450a4b3d38b.png) [@system](https://discuss.tryton.org/u/system)\
**Post date:** [June 19, 2020, 5:42pm UTC](https://discuss.tryton.org/t/test-pyson-statement/2739/7 "2020-06-19T17:42:17Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
