diff --git a/tests/test_html2docx.py b/tests/test_html2docx.py
new file mode 100644
index 0000000..dee721c
--- /dev/null
+++ b/tests/test_html2docx.py
@@ -0,0 +1,46 @@
+import json
+import pathlib
+
+import docx
+import pytest
+
+from html2docx import html2docx
+
+
+def generate_testdata():
+ datadir = pathlib.Path(__file__).parent.joinpath("data")
+ for html_path in datadir.glob("*.html"):
+ spec_path = datadir.joinpath(f"{html_path.stem}.json")
+ yield html_path, spec_path
+
+
+@pytest.mark.parametrize("html_path,spec_path", generate_testdata())
+def test_html2docx(html_path, spec_path):
+ title = html_path.name
+ with html_path.open() as fp:
+ html = fp.read()
+ with spec_path.open() as fp:
+ spec = json.load(fp)
+
+ buf = html2docx(html, title=title)
+ doc = docx.Document(buf)
+
+ assert doc.core_properties.title == title
+ assert len(doc.paragraphs) == len(spec)
+ for p, p_spec in zip(doc.paragraphs, spec):
+ assert p.text == p_spec["text"]
+ assert p.style.name == p_spec.get("style", "Normal")
+
+ runs_spec = p_spec["runs"]
+ assert len(p.runs) == len(runs_spec)
+ for run, run_spec in zip(p.runs, runs_spec):
+ assert run.text == run_spec["text"]
+ assert run.bold is run_spec.get(
+ "bold", False
+ ), f"Wrong bold for text '{run.text}'."
+ assert run.italic is run_spec.get(
+ "italic", False
+ ), f"Wrong italic for text '{run.text}'."
+ assert run.underline is run_spec.get(
+ "underline", False
+ ), f"Wrong underline for text '{run.text}'."
diff --git a/tests/tests.py b/tests/tests.py
deleted file mode 100644
index 69474eb..0000000
--- a/tests/tests.py
+++ /dev/null
@@ -1,48 +0,0 @@
-import json
-import pathlib
-from unittest import TestCase
-
-import docx
-
-from html2docx import html2docx
-
-
-class Html2DocxTest(TestCase):
- def test_html2docx(self):
- datadir = pathlib.Path(__file__).parent.joinpath("html2docx")
- for path in datadir.glob("*.html"):
- with self.subTest(path.name):
- with datadir.joinpath(f"{path.stem}.json").open() as fp:
- spec = json.load(fp)
-
- with path.open() as fp:
- html = fp.read()
-
- buf = html2docx(html, title=path.name)
- doc = docx.Document(buf)
-
- self.assertEqual(doc.core_properties.title, path.name)
- self.assertEqual(len(doc.paragraphs), len(spec))
- for p, p_spec in zip(doc.paragraphs, spec):
- self.assertEqual(p.text, p_spec["text"])
- self.assertEqual(p.style.name, p_spec.get("style", "Normal"))
-
- runs_spec = p_spec["runs"]
- self.assertEqual(len(p.runs), len(runs_spec))
- for run, run_spec in zip(p.runs, runs_spec):
- self.assertEqual(run.text, run_spec["text"])
- self.assertEqual(
- run.bold,
- run_spec.get("bold", False),
- f"Wrong bold for text '{run.text}'.",
- )
- self.assertEqual(
- run.italic,
- run_spec.get("italic", False),
- f"Wrong italic for text '{run.text}'.",
- )
- self.assertEqual(
- run.underline,
- run_spec.get("underline", False),
- f"Wrong underline for text '{run.text}'.",
- )
diff --git a/tox.ini b/tox.ini
index c02012a..ab7026f 100644
--- a/tox.ini
+++ b/tox.ini
@@ -7,7 +7,8 @@ envlist =
minversion = 1.9
[testenv]
-commands = python -m unittest
+commands = pytest {posargs}
+deps = pytest
[testenv:black]
commands = black --target-version=py36 --check --diff .