Skip to content

Commit

Permalink
Improve translate_text test case for formality
Browse files Browse the repository at this point in the history
  • Loading branch information
daniel-jones-dev committed Feb 16, 2022
1 parent 4dc0501 commit 060965b
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 28 deletions.
21 changes: 11 additions & 10 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 47,8 @@ def server(config):
class Server:
def __init__(self):
self.headers = {}
if config.mock_server_port is not None:
self.is_mock_server = config.mock_server_port is not None
if self.is_mock_server:
self.server_url = config.server_url
self.auth_key = "mock_server"
uu = str(uuid.uuid1())
Expand All @@ -62,67 63,67 @@ def __init__(self):
def no_response(self, count):
"""Instructs the mock server to ignore N requests from this
session, giving no response."""
if config.mock_server_port is not None:
if self.is_mock_server:
self.headers["mock-server-session-no-response-count"] = str(
count
)

def respond_with_429(self, count):
"""Instructs the mock server to reject N /translate requests from
this session with 429 status codes."""
if config.mock_server_port is not None:
if self.is_mock_server:
self.headers["mock-server-session-429-count"] = str(count)

def init_character_limit(self, count):
"""Instructs the mock server to initialize user accounts created by
this session with given character limit."""
if config.mock_server_port is not None:
if self.is_mock_server:
self.headers["mock-server-session-init-character-limit"] = str(
count
)

def init_document_limit(self, count):
"""Instructs the mock server to initialize user accounts created by
this session with given document limit."""
if config.mock_server_port is not None:
if self.is_mock_server:
self.headers["mock-server-session-init-document-limit"] = str(
count
)

def init_team_document_limit(self, count):
"""Instructs the mock server to initialize user accounts created by
this session with given team document limit."""
if config.mock_server_port is not None:
if self.is_mock_server:
self.headers[
"mock-server-session-init-team-document-limit"
] = str(count)

def set_doc_failure(self, count):
"""Instructs the mock server to fail during translation of N
documents during this session."""
if config.mock_server_port is not None:
if self.is_mock_server:
self.headers["mock-server-session-doc-failure"] = str(count)

def set_doc_queue_time(self, milliseconds):
"""Instructs the mock server to queue documents for specified time
before translation."""
if config.mock_server_port is not None:
if self.is_mock_server:
self.headers["mock-server-session-doc-queue-time"] = str(
milliseconds
)

def set_doc_translate_time(self, milliseconds):
"""Instructs the mock server to translate documents within
specified time."""
if config.mock_server_port is not None:
if self.is_mock_server:
self.headers["mock-server-session-doc-translate-time"] = str(
milliseconds
)

def expect_proxy(self, value: bool = True):
"""Instructs the mock server to only accept requests via the
proxy."""
if config.mock_server_port is not None:
if self.is_mock_server:
self.headers["mock-server-session-expect-proxy"] = (
"1" if value else "0"
)
Expand Down
58 changes: 40 additions & 18 deletions tests/test_translate_text.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,46 141,63 @@ def test_translate_with_retries(translator, server):
assert time_after - time_before > 1.0


@needs_real_server
def test_formality(translator):
def test_formality(translator, server):
input_text = "How are you?"
informal = "Wie geht es dir?"
formal = "Wie geht es Ihnen?"

result = translator.translate_text(
"How are you?", target_lang="DE", formality=deepl.Formality.LESS
input_text, target_lang="DE", formality=deepl.Formality.LESS
)
assert "Wie geht es dir?" == result.text
if not server.is_mock_server:
assert informal == result.text
result = translator.translate_text(
"How are you?", target_lang="DE", formality=deepl.Formality.DEFAULT
input_text, target_lang="DE", formality=deepl.Formality.DEFAULT
)
assert "Wie geht es Ihnen?" == result.text
if not server.is_mock_server:
assert formal == result.text
result = translator.translate_text(
"How are you?", target_lang="DE", formality=deepl.Formality.MORE
input_text, target_lang="DE", formality=deepl.Formality.MORE
)
assert "Wie geht es Ihnen?" == result.text
if not server.is_mock_server:
assert formal == result.text

# Specifying formality as string is also permitted
result = translator.translate_text(
"How are you?", target_lang="DE", formality="less"
input_text, target_lang="DE", formality="less"
)
assert "Wie geht es dir?" == result.text
if not server.is_mock_server:
assert informal == result.text

result = translator.translate_text(
"How are you?", target_lang="DE", formality="default"
input_text, target_lang="DE", formality="default"
)
assert "Wie geht es Ihnen?" == result.text
if not server.is_mock_server:
assert formal == result.text

result = translator.translate_text(
"How are you?", target_lang="DE", formality="more"
input_text, target_lang="DE", formality="more"
)
assert "Wie geht es Ihnen?" == result.text
if not server.is_mock_server:
assert formal == result.text

# formality parameter is case-insensitive
result = translator.translate_text(
"How are you?", target_lang="DE", formality="Less"
input_text, target_lang="DE", formality="Less"
)
assert "Wie geht es dir?" == result.text
if not server.is_mock_server:
assert informal == result.text

with pytest.raises(deepl.DeepLException, match=r".*formality.*"):
result = translator.translate_text(
"How are you?", target_lang="DE", formality="invalid"
_ = translator.translate_text(
input_text, target_lang="DE", formality="invalid"
)

with pytest.raises(
deepl.DeepLException, match=r".*formality.*target_lang.*"
):
_ = translator.translate_text(
"Test", target_lang="EN-US", formality="more"
)


Expand Down Expand Up @@ -218,6 235,11 @@ def test_split_sentences_basic(translator):
text, target_lang="DE", split_sentences="nonewlines"
)

with pytest.raises(deepl.DeepLException, match=r".*split_sentences.*"):
_ = translator.translate_text(
text, target_lang="DE", split_sentences="invalid"
)


def test_tag_handling_basic(translator):
text = """
Expand Down

0 comments on commit 060965b

Please sign in to comment.