include assert in validator test in pytest (#2033)

* include assert in valudator test in pytest

* remove try_assert execution in Makefile

* use pytest.raises

* add newline

* tweak

* undo my mistake

Co-authored-by: Samuel Colvin <s@muelcolvin.com>
This commit is contained in:
Arseny Boykov
2020-10-25 22:50:38 +03:00
committed by GitHub
parent 0af5e5f559
commit 2f7e40476f
3 changed files with 26 additions and 34 deletions
-1
View File
@@ -60,7 +60,6 @@ mypy:
.PHONY: test
test:
pytest --cov=pydantic
@python tests/try_assert.py
.PHONY: testcov
testcov: test
+26
View File
@@ -0,0 +1,26 @@
"""
PYTEST_DONT_REWRITE
"""
import pytest
from pydantic import BaseModel, ValidationError, validator
def test_assert_raises_validation_error():
class Model(BaseModel):
a: str
@validator('a')
def check_a(cls, v):
assert v == 'a', 'invalid a'
return v
assert Model(a='a').a == 'a'
with pytest.raises(ValidationError) as exc_info:
Model(a='snap')
expected_errors = [{'loc': ('a',), 'msg': 'invalid a', 'type': 'assertion_error'}]
actual_errors = exc_info.value.errors()
if expected_errors != actual_errors:
pytest.fail(f'Actual errors: {actual_errors}\nExpected errors: {expected_errors}')
-33
View File
@@ -1,33 +0,0 @@
"""
This test is executed separately due to pytest's assertion-rewriting
"""
from pydantic import BaseModel, ValidationError, validator
def test_assert_raises_validation_error():
test_name = test_assert_raises_validation_error.__name__
class Model(BaseModel):
a: str
@validator('a')
def check_a(cls, v):
assert v == 'a', 'invalid a'
return v
Model(a='a')
expected_errors = [{'loc': ('a',), 'msg': 'invalid a', 'type': 'assertion_error'}]
try:
Model(a='snap')
except ValidationError as exc:
actual_errors = exc.errors()
if actual_errors != expected_errors:
raise RuntimeError(f'{test_name}:\nActual errors: {actual_errors}\nExpected errors: {expected_errors}')
else:
raise RuntimeError(f'{test_name}: ValidationError was not raised')
if __name__ == '__main__':
test_assert_raises_validation_error()
print('Non-pytest assert tests passed')