删除 assertDictEqual 中的空格以传递 Flake8

Remove empty spaces in assertDictEqual to pass Flake8

我正在修复代码以通过 Flake8 在 PEP8 中规范化。问题之一是长行,我需要跳过行来完成 Flake8。

这是我的 return,我使用 :

跳过了一行
        expected_return = {
            "error": {
                "message": None,
                "type": "You are logged as admin. This endpoint requires\
                         a customer or an anonymous user.",
                "detail": None,
            }
        }

在 Django 中使用 from django.test import TestCase,我的断言是:

self.assertDictEqual(self.deserialize(response.content), expected_return)

我的测试没有通过,因为断言中包含空格:

AssertionError: {u'error': {u'message': None, u'type': u'You are logged as admin. This endpoint  [truncated]... != {u'error': {u'message': None, u'type': u'You are logged as admin. This endpoint  [truncated]...
  {u'error': {u'detail': None,
              u'message': None,
-             u'type': u'You are logged as admin. This endpoint requires a customer or an anonymous user.'}}
+             u'type': u'You are logged as admin. This endpoint requires                         a customer or an anonymous user.'}}

我也尝试使用 self.assertMultiLineEqual,但出现了其他错误。

根据 PEP8,您通常使用什么解决方案来跳过行,并且不会在 unittest 中收到此错误?

此致。

Python 支持通过依次出现来连接字符串:

    expected_return = {
        "error": {
            "message": None,
            "type": "You are logged as admin. This endpoint requires "\ 
                    "a customer or an anonymous user.",
            "detail": None,
        }
    }

最终结果是一个没有任何额外空格的连接字符串:

"You are logged as admin. This endpoint requires a customer or an anonymous user."

您可以使用 括号 将长文本缩小为,

import unittest


def my_cool_function():
    return {
        "error": {
            "message": None,
            "type": "You are logged as admin. This endpoint requires a customer or an anonymous user.",
            "detail": None,
        }
    }


class TestStringMethods(unittest.TestCase):

    def test_flake8_length(self):
        result = my_cool_function()
        self.assertEqual(
            result,
            {
                "error": {
                    "message": None,
                    <b>"type": (
                        "You are "
                        "logged as admin. "
                        "This endpoint "
                        "requires a customer "
                        "or an anonymous user."
                    ),</b>
                    "detail": None,
                }
            }
        )


if __name__ == '__main__':
    unittest.main()