From f2e7d754d627cb873e43a4fa680474186054acb7 Mon Sep 17 00:00:00 2001 From: NateScarlet Date: Fri, 20 Sep 2019 19:32:41 +0800 Subject: [PATCH] test: use pytest parametrize mark --- tests/test_fetch_holidays.py | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/tests/test_fetch_holidays.py b/tests/test_fetch_holidays.py index affcb7b..c66e130 100644 --- a/tests/test_fetch_holidays.py +++ b/tests/test_fetch_holidays.py @@ -1,8 +1,10 @@ """Test module `fetch_holidays`. """ import json -import sys -from fetch_holidays import CustomJSONEncoder, DescriptionParser, get_paper_urls, get_rules, get_paper +import pytest + +from fetch_holidays import (CustomJSONEncoder, DescriptionParser, get_paper, + get_paper_urls, get_rules) from .filetools import _file_path @@ -15,8 +17,11 @@ def test_get_paper_urls(): def test_get_rules(): - assert(list(get_rules(get_paper('http://www.gov.cn/zhengce/content/2019-03/22/content_5375877.htm'))) - == [('劳动节', '2019年5月1日至4日放假调休,共4天。4月28日(星期日)、5月5日(星期日)上班。')]) + assert ( + list(get_rules(get_paper( + 'http://www.gov.cn/zhengce/content/2019-03/22/content_5375877.htm'))) + == [('劳动节', + '2019年5月1日至4日放假调休,共4天。4月28日(星期日)、5月5日(星期日)上班。')]) def _normalize(iterable): @@ -24,20 +29,14 @@ def _normalize(iterable): key=lambda x: x['date']) -def _generate_tests(): +def _description_parsing_cases(): with open(_file_path('description_parsing_cases.json'), 'r', encoding='utf-8', ) as f: - cases = json.load(f) - - def create_test(case): - def _test(): - year, description, expected = case['year'], case['description'], case['expected'] - assert _normalize(DescriptionParser( - description, year).parse()) == _normalize(expected), case - return _test - - for index, case in enumerate(cases, 1): - setattr(sys.modules[__name__], - f'test_description_parser_{index}', create_test(case)) + return json.load(f) -_generate_tests() +@pytest.mark.parametrize('case', _description_parsing_cases()) +def test_parse_description(case): + + year, description, expected = case['year'], case['description'], case['expected'] + assert _normalize(DescriptionParser( + description, year).parse()) == _normalize(expected), case