У меня есть строка result
, которая выглядит так:
>>> result
'--- \n+++ \n@@ -48,7 +48,7 @@\n "%%time\\n",\n "def hello(name: str = \\"world\\"):\\n",\n "\\n",\n- " return f\'hello {name}\'\\n",\n+ " return f\\"hello {name}\\"\\n",\n "\\n",\n "\\n",\n "hello(3)"\n'
>>> print(result)
---
+++
@@ -48,7 +48,7 @@
"%%time\n",
"def hello(name: str = \"world\"):\n",
"\n",
- " return f'hello {name}'\n",
+ " return f\"hello {name}\"\n",
"\n",
"\n",
"hello(3)"
Я хотел бы написать для этого тестовый пример. Один (не такой простой для чтения) способ записать это будет
expected = '--- \n+++ \n@@ -48,7 +48,7 @@\n "%%time\\n",\n "def hello(name: str = \\"world\\"):\\n",\n "\\n",\n- " return f\'hello {name}\'\\n",\n+ " return f\\"hello {name}\\"\\n",\n "\\n",\n "\\n",\n "hello(3)"\n'
, а затем
assert result == expected
будет работать.
Еще один более читаемый способ -
expected = (
"""
---
+++
@@ -48,7 +48,7 @@
"%%time\n",
"def hello(name: str = \"world\"):\n",
"\n",
- " return f'hello {name}'\n",
+ " return f\"hello {name}\"\n",
"\n",
"\n",
"hello(3)"
"""
)
но тогда
assert result == expected
больше не работает.
Я думаю, что \n
внутри строк затрудняет выполнение чего-то вроде
'\n'.join([i[8:] for i in expected.split('\n')])
- не говоря уже о том, что это нелегко читать.
Есть ли способ записать expected
с тройными кавычками (как указано выше) таким образом, чтобы result==expected
подойдет?