Skip to content

Commit 8d0678c

Browse files
authored
adding more string benchmarks (#412)
1 parent 786f4c0 commit 8d0678c

File tree

1 file changed

+69
-1
lines changed

1 file changed

+69
-1
lines changed

tests/benchmarks/test_micro_benchmarks.py

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,14 +263,82 @@ def test_core_string_lax(benchmark):
263263
benchmark(validator.validate_python, input_str)
264264

265265

266+
@pytest.mark.benchmark(group='string')
267+
def test_core_string_lax_wrong(benchmark):
268+
validator = SchemaValidator(core_schema.str_schema())
269+
270+
with pytest.raises(ValidationError, match='Input should be a valid string'):
271+
validator.validate_python(123)
272+
273+
@benchmark
274+
def t():
275+
try:
276+
validator.validate_python(123)
277+
except ValidationError:
278+
pass
279+
280+
266281
@pytest.mark.benchmark(group='string')
267282
def test_core_string_strict(benchmark):
268283
validator = SchemaValidator(core_schema.str_schema(strict=True))
269284
input_str = 'Hello ' * 20
270285

271286
assert validator.validate_python(input_str) == input_str
272287

273-
benchmark(validator.validate_python, 'foo')
288+
benchmark(validator.validate_python, input_str)
289+
290+
291+
@pytest.mark.benchmark(group='string')
292+
def test_core_string_strict_wrong(benchmark):
293+
validator = SchemaValidator(core_schema.str_schema(strict=True))
294+
295+
with pytest.raises(ValidationError, match='Input should be a valid string'):
296+
validator.validate_python(123)
297+
298+
@benchmark
299+
def t():
300+
try:
301+
validator.validate_python(123)
302+
except ValidationError:
303+
pass
304+
305+
306+
@pytest.mark.benchmark(group='isinstance-string')
307+
def test_isinstance_string_lax_true(benchmark):
308+
validator = SchemaValidator(core_schema.str_schema())
309+
input_str = 'Hello ' * 20
310+
311+
assert validator.isinstance_python(input_str) is True
312+
313+
benchmark(validator.isinstance_python, input_str)
314+
315+
316+
@pytest.mark.benchmark(group='isinstance-string')
317+
def test_isinstance_string_lax_false(benchmark):
318+
validator = SchemaValidator(core_schema.str_schema())
319+
320+
assert validator.isinstance_python(123) is False
321+
322+
benchmark(validator.isinstance_python, 123)
323+
324+
325+
@pytest.mark.benchmark(group='isinstance-string')
326+
def test_isinstance_string_strict_true(benchmark):
327+
validator = SchemaValidator(core_schema.str_schema(strict=True))
328+
input_str = 'Hello ' * 20
329+
330+
assert validator.isinstance_python(input_str) is True
331+
332+
benchmark(validator.isinstance_python, input_str)
333+
334+
335+
@pytest.mark.benchmark(group='isinstance-string')
336+
def test_isinstance_string_strict_false(benchmark):
337+
validator = SchemaValidator(core_schema.str_schema(strict=True))
338+
339+
assert validator.isinstance_python(123) is False
340+
341+
benchmark(validator.isinstance_python, 123)
274342

275343

276344
@pytest.fixture

0 commit comments

Comments
 (0)