test: use pytest parametrize mark

This commit is contained in:
NateScarlet 2019-09-20 19:32:41 +08:00
parent d7a065c31e
commit f2e7d754d6
No known key found for this signature in database
GPG Key ID: 5C242793B070309C

View File

@ -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