Python Django 2.0测试密码更改所需的登录失败,出现语法错误

Python Django 2.0测试密码更改所需的登录失败,出现语法错误,python,django,Python,Django,我正在学习维托弗雷塔斯的教程 我正在使用Django 2.0.7执行此任务。我知道本教程是为1.11编写的,我一直在解决在这个过程中遇到的任何挑战。目前,我有一个测试由于此错误而无法运行 (unittest.loader.\u未通过测试) ----------------------------------------------------------------------导入错误:无法导入测试模块: accounts.tests.test\查看\密码\更改回溯(最近一次呼叫 最后):文件“

我正在学习维托弗雷塔斯的教程

我正在使用Django 2.0.7执行此任务。我知道本教程是为1.11编写的,我一直在解决在这个过程中遇到的任何挑战。目前,我有一个测试由于此错误而无法运行

(unittest.loader.\u未通过测试) ----------------------------------------------------------------------导入错误:无法导入测试模块: accounts.tests.test\查看\密码\更改回溯(最近一次呼叫 最后):文件“/usr/lib/python3.5/unittest/loader.py”,第428行,in _查找测试路径 module=self.\u从文件“/usr/lib/python3.5/unittest/loader.py”的第369行中获取模块 _从\u名称获取\u模块\u 导入(名称)文件“/home/lance/dev/proj/accounts/tests/test\u view\u password\u change.py”, 第44行 assertRedirects(响应,f'{login_url}?next={url}')

测试代码如下所示

class PasswordChangeTests(TestCase):
    def setUp(self):
        username = 'john'
        password = 'secret123'
        user = User.objects.create_user(username=username, email='john@doe.com', password=password)
        url = reverse('password_change')
        self.client.login(username=username, password=password)
        self.response = self.client.get(url)


class LoginRequiredPasswordChangeTests(TestCase):
    def test_redirection(self):
        url = reverse('password_change')
        login_url = reverse('login')
        response = self.client.get(url)
        self.assertRedirects(response, f'{login_url}?next={url}')
无效语法似乎来自最后一行

assertRedirects(响应,f'{login_url}?next={url}')

有人能帮我解释一下为什么这是无效的吗? 据我所知,测试正在寻找单引号中列出的模式,我已经测试了它是否存在

我不明白为什么单引号是不正确的。

因为是从Python 3.6开始实现的。因此,请确保您使用的是
python3.6+


您还可以使用
str.format()
方法作为,
self.assertRedirects(响应,{}?next={}.format(登录url,url))
,因为从Python 3.6开始实现了。因此,请确保您使用的是
python3.6+


您还可以使用
str.format()
方法作为,

self.assertRedirects(响应,{}?next={}.格式(登录url,url))
f
-Python 3.6中引入了字符串。它们是早期版本中的语法错误。这可能是您的问题吗?

f
-在Python 3.6中引入了字符串。它们是早期版本中的语法错误。这可能是您的问题吗?

f字符串是在Python 3.6中引入的。它们是早期版本中的语法错误。这可能是你的问题吗?我刚刚检查过,我相信你是对的。您能创建一个答案吗,这样我就可以相信您了?作为requestedf字符串创建的答案是在Python 3.6中引入的。它们是早期版本中的语法错误。这可能是你的问题吗?我刚刚检查过,我相信你是对的。你能创造一个答案,这样我就可以信任你了吗?答案按要求创造谢谢额外的提示。我将尝试您的解决方案来更改测试URL。我意识到我的virtualenv是3.5版的,为了得到额外的提示,我更新到了3.6版。我将尝试您的解决方案来更改测试URL。我意识到我的virtualenv是3.5版的,并更新到了3.6版
class PasswordChangeTests(TestCase):
    def setUp(self):
        username = 'john'
        password = 'secret123'
        user = User.objects.create_user(username=username, email='john@doe.com', password=password)
        url = reverse('password_change')
        self.client.login(username=username, password=password)
        self.response = self.client.get(url)


class LoginRequiredPasswordChangeTests(TestCase):
    def test_redirection(self):
        url = reverse('password_change')
        login_url = reverse('login')
        response = self.client.get(url)
        self.assertRedirects(response, f'{login_url}?next={url}')