请记住,在第一个教程中您已经创建了您的第一个 Python 应用程序,而在第二个教程中您已经调试了它。现在是时候进行一些测试了。让我们修改代码示例brake
的方法:
def 刹车(self): self.speed -= 5
选择测试运行器
PyCharm 自动检测安装在Python 解释器上的测试运行程序,并使用它来运行测试。如果没有安装特定的测试运行器,PyCharm 使用unittest。
要在项目设置中明确设置所需的测试运行器,请按Ctrl+Alt+S打开 IDE 设置并选择工具 | Python Integrated Tools,然后从默认测试运行程序列表中选择目标测试运行程序。

有关更多详细信息,请参阅测试框架。
创建测试
创建测试的一种快速方法是让 PyCharm 从我们要测试的类中将它们存根。为此,我们需要打开Car.py,然后右键单击类的名称,指向,然后选择(或只需按Ctrl+Shift+T):

出现一个弹出窗口,建议创建一个新测试:

好的,让我们一起做。我们将测试我们的汽车是否能够加速和制动,所以让我们选中这些复选框:

创建了一个新的 Python 测试类:

您可以为测试创建运行/调试配置并运行它。
但是,我们可以看到测试默认失败:
现在我们知道我们可以运行测试了,让我们开始编写一些实际的测试代码。
写作测试
如何编写单元测试超出了本文的范围。如果您有兴趣了解如何使用 `unittest` 框架,可以查看他们的文档。
对于我们的示例,让我们使用这些测试:
从 Car 导入 unittest 导入 Car 类 TestCar(unittest.TestCase): def setUp(self): self.car = Car() class TestInit(TestCar): def test_initial_speed(self): self.assertEqual(self.car.speed, 0 ) def test_initial_odometer(self): self.assertEqual(self.car.odometer, 0) def test_initial_time(self): self.assertEqual(self.car.time, 0) class TestAccelerate(TestCar): def test_accelerate_from_zero(self): self .car.accelerate() self.assertEqual(self.car.speed, 5) def test_multiple_accelerates(self): for _ in range(3): self.car.accelerate() self.assertEqual(self.car.speed, 15 ) 类 TestBrake(TestCar): def test_brake_once(self): self.car.accelerate() self.car.brake() self.assertEqual(self.car.speed, 0) def test_multiple_brakes(self): for _ in range(5): self.car.accelerate() for _ in range(3): self.car.brake() self.assertEqual( self.car.speed, 10) def test_should_not_allow_negative_speed(self): self.car.brake() self.assertEqual(self.car.speed, 0) def test_multiple_brakes_at_zero(self): for _ in range(3): self.car .brake() self.assertEqual(self.car.speed, 0)self.car.brake() self.assertEqual(self.car.speed, 0) def test_multiple_brakes_at_zero(self): for _ in range(3): self.car.brake() self.assertEqual(self.car.speed, 0)self.car.brake() self.assertEqual(self.car.speed, 0) def test_multiple_brakes_at_zero(self): for _ in range(3): self.car.brake() self.assertEqual(self.car.speed, 0)
运行测试
现在通过右键单击类声明上方的编辑器背景来运行测试test_car
。这次成功通过了一些测试:

调试测试
接下来,让我们更深入地研究测试代码并调试其中一个失败的测试。例如,我们将在以下位置放置一个断点:

接下来,启动调试器会话。为此,请右键单击方法的编辑器背景并从上下文菜单中test_should_not_allow_negative_speed
选择“调试
”,或单击导航栏中的 :

我们已经在方法的self.car.brake()
语句处放置了断点test_should_not_allow_negative_speed
。让我们看看调试器的输出:

单击
按钮跳过库类并进入类Car
:

接下来,
再次单击相同的按钮,并查看测试调试输出:

它表明速度可以变成负数,这是不可能的。似乎在类的代码中需要进行一些额外的检查Car
:
改变方法brake
如下:
def 刹车(self): 如果 self.speed < 5: self.speed = 0 else: self.speed -= 5
现在让我们再次运行测试:

自动运行测试
在最后一段中,在修复了我们的代码之后,我们使用
图标重新运行了我们的测试。如果您想专注于您的代码,只是看看您何时解决了问题,PyCharm 可以自动为您运行测试。
单击运行工具栏
上的按钮。然后,每次您在项目文件中输入更改时(就像之前所做的那样),测试将在没有您干预的情况下运行。
最后修改:2021 年 12 月 24 日