PyCharm 2025.2 Help

使用 Twisted 进行测试驱动开发

简介

在这里,我们将使用位于 此地址 的教程“使用 Twisted 进行测试驱动开发”,并尝试使用 PyCharm 重现它。

创建项目、包和 Python 文件

转到 文件 | 新建项目... ,并在 新项目 对话框中选择创建一个纯 Python 项目。 我们将其命名为 Calculus

创建一个名为 calculus 的空目录,其中包含一个空的 __init__.py 文件。 为此,请转到主菜单中的 文件 | 新建 ... ,然后从 新建 弹出菜单中选择 Python 软件包

接下来,创建一个 Python 文件。 为此,再次转到主菜单中的 文件 | 新建... ,并在弹出菜单中选择 Python 文件。 此文件名为 base_1.py ,并会立即打开以供编辑。 输入以下代码:

class Calculation(object): def add(self, a, b): pass def subtract(self, a, b): pass def multiply(self, a, b): pass def divide(self, a, b): pass

接下来,右键点击包 calculus ,再次创建一个 Python 包——这次应将其命名为 test

正在安装软件包

您必须安装 Twisted 包以执行测试。 此外,如果您在 Windows 上工作,还需要安装 pypiwin32 包。

在 PyCharm 中安装所需包最为简单:为此,请转到设置对话框并打开 项目:<project_name> | Python 解释器 页面。 在此页面的 包工具栏 部分,点击 ,并在 可用软件包 对话框中选择所需的包。 有关更多信息,请参见 安装、卸载和升级软件包

选择所需的测试运行器

再次在 设置 对话框(Ctrl+Alt+S )中,在 工具 节点下,单击 集成工具 页面。

在此页面中,从 默认测试运行器 字段的列表中选择测试运行器 Twisted Trial

应用更改并关闭对话框。

创建一个失败的测试

右键点击类声明旁边的文件 base_1.py ,然后按 Ctrl+Shift+T 或从上下文菜单中选择 转到 | 测试。 在 创建测试对话框 中,您需要对默认设置进行一些更改:

首先,点击 目标目录 字段旁边的浏览按钮,并选择 test 包。

其次,在 测试文件名 字段中输入名称 test_base_1.py ,并在 测试类名 字段中输入名称 TestBase_1。 最后,选择所有方法——这样将包括被测试类的所有方法的测试。

您应该得到以下代码:

from unittest import TestCase class TestBase_1(TestCase): def test_add(self): self.fail() def test_subtract(self): self.fail() def test_divide(self): self.fail() def test_multiply(self): self.fail()

这是一个工作类,但我们正在为 Twisted 编写测试……让我们导入该包。 您将得到以下代码:

from twisted.trial import unittest class TestBase_1(unittest.TestCase): def test_add(self): self.fail() def test_subtract(self): self.fail() def test_divide(self): self.fail() def test_multiply(self): self.fail()

由于 TDD(测试驱动开发)的理念是先编写测试再编写代码,让我们编写实际的测试:

from base_1 import Calculation from twisted.trial import unittest class CalculationTestCase(unittest.TestCase): def test_add(self): calc = Calculation() result = calc.add(3, 8) self.assertEqual(result, 11) def test_subtract(self): calc = Calculation() result = calc.subtract(7, 3) self.assertEqual(result, 4) def test_multiply(self): calc = Calculation() result = calc.multiply(12, 5) self.assertEqual(result, 60) def test_divide(self): calc = Calculation() result = calc.divide(12, 4) self.assertEqual(result, 3)

顺便看看项目工具窗口——它显示了项目的结构。 目前,您有 4 个文件:

  • calculus/__init__.py

  • calculus/base_1.py

  • calculus/test/__init__.py

  • calculus/test/test_base_1.py

运行失败的测试

现在让我们运行此测试。 为此,打开测试文件 test_base_1.py 进行编辑,右键点击编辑器背景,并从上下文菜单中选择 运行 'Twisted Trial for test_base_1.CalculationTestCase'

如预期的那样,所有测试都失败了:

测试失败

请注意,在项目工具窗口中出现了一个新目录 - _trial_temp 。 它包含日志文件:

日志文件

使测试通过

让我们更改被测试的类并使测试通过。 为此,我们将更改 base_1.py 脚本。 文件的代码将如下所示:

class Calculation(object): def add(self, a, b): return a + b def subtract(self, a, b): return a - b def multiply(self, a, b): return a * b def divide(self, a, b): return a // b

让我们再次运行 test_base_1.py 。 为此,右键点击编辑器背景,并选择 运行 'Twisted Trial for test_base_1.CalculationTestCase'。 这次测试通过了:

测试通过
最后修改日期: 2025年 9月 26日