使用 Twisted 进行测试驱动开发
最后修改时间:2023 年 10 月 18 日介绍
在这里,我们将学习位于此地址的教程“Test-Driven Development with Twisted” ,并尝试使用 PyCharm 重复它。
创建项目、包和 Python 文件
转到文件 | 新建项目...,然后在“新建项目”对话框中,选择创建一个纯 Python 项目。我们就这样称呼它吧Calculus
。
创建一个名为calculus的空目录,其中包含一个空的__init__.py文件。为此,请选择“文件”|“ 从主菜单中新建...,然后从新建弹出菜单中选择Python Package。
接下来,创建一个 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
提示
可以复制此代码,但我们强烈建议您手动输入 - 这样您将亲身体验 PyCharm 强大的代码补全功能。
接下来,右键单击包calculus并再次创建一个 Python 包 - 这次它应该被称为test。
安装软件包
您必须安装Twisted包才能执行测试。除此之外,如果您在 Windows 上工作,还请安装包pypiwin32。
在 PyCharm 中安装所需的包是最简单的:为此,请转到“设置”对话框并打开项目:<project_name> | Python 解释器页面。在此页面的“包”工具栏部分中,单击并在“可用包”对话框中选择所需的包。有关详细信息,请参阅安装、卸载和升级包。
选择所需的测试运行程序
再次在“设置”对话框 ( ) 的“工具”节点下,单击“Python 集成工具”页面。CtrlAlt0S
在此页面上,从默认测试运行程序字段的列表中选择测试运行程序Twisted Trial。
应用更改并关闭对话框。
创建失败的测试
右键单击类声明旁边的文件base_1.py ,然后按或选择Go To | 从上下文菜单进行测试。在“创建测试”对话框中,您必须对默认设置进行一些更改:CtrlShift0T
首先,单击目标目录字段旁边的浏览按钮,然后选择测试包。
其次,在“测试文件名”字段中输入名称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 calculus.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 个文件:
微积分/__init__.py
微积分/base_1.py
微积分
/测试 /__init__.py 微积分
/test/test_base_1.py
运行失败的测试
现在让我们运行这个测试。为此,打开并编辑测试文件test_base_1.py,右键单击编辑器背景,然后从上下文菜单中选择Run '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。为此,右键单击编辑器背景并选择Run 'Twisted Trial for test_base_1.CalculationTestCase'。这次测试通过了:
感谢您的反馈意见!