一份完整的PyCharm图解教程( 三 )


3.点击 F8 执行当前代码行 , 并执行到下一行代码 。如有必要 , 你也可以使用 F7 跳转到当前行内的函数 。随着你继续执行语句 , 变量的变化将自动呈现在 Debugger 窗口 。
4.注意 Debugger 标签右侧有一个 Console 标签 。Console 标签和 Debugger 标签相互独立 。你可以在 Console 中与程序进行交互 , 在 Debugger 中执行 debug 动作 。
5.转向 Console 标签 , 进入猜测过程 。
6.键入左侧 Debugger 标签中显示的数字 , 点击 Enter 键 。
7.转回 Debugger 标签 。
8.再次点击 F8 , 计算 if 语句 。注意现在你在第 14 行 。为什么不是第 11 行呢?因为第 10 行的 if 语句被计算为 False 。那么为什么当你键入数字后它算出来为 False 了呢?
9.仔细看第 10 行 , 注意我们在对比 user_guess 和一个错误的项 。我们应该对比用户猜测的数字和 random_int , 但此处我们对比的是 randint(从 random 包导入的函数) 。
10.将 randint 更改为 random_int , 按照同样的步骤重新开始 debug 。你会发现 , 这一次到达的是第 11 行 , 第 10 行算出来为 True:

一份完整的PyCharm图解教程

文章插图
 
恭喜你 , bug 被修复了!
 
# 在 PyCharm 中进行代码测试
 
不经单元测试的应用都不可靠 。PyCharm 可以帮助你快速舒适地写单元测试并运行 。默认情况下 , unittest 被用作测试运行器 , 而 PyCharm 还支持其他测试框架 , 如 pytest、nose、doctest、tox 和 trial 。例如 , 你可以按照以下步骤为项目选择 pytest 测试运行器:
 
1.打开 Settings/Preferences → Tools → Python Integrated Tools 设置对话框 。
2.在默认测试运行器字段中选择 pytest 。
3.点击 OK 保存该设置 。
 
本教程的示例将使用默认测试运行器 unittest 。
 
在同一个项目中 , 创建文件 calculator.py , 并将以下 Calculator 类放入该文件:
一份完整的PyCharm图解教程

文章插图
 
PyCharm 使得为已有代码创建测试变得轻而易举 。打开 calculator.py 文件 , 执行以下步骤中的任意一个:
 
  • 在 Mac 系统中使用 Shift+Cmd+T 键 , 在 Windows 或 Linux 系统中使用 Ctrl+Shift+T 。
  • 右键单击该类的背景 , 选择「Go To and Test」 。
  • 在主菜单中吗 , 选择 Navigate → Test 。
 
选择「Create New Test…」 , 得到以下窗口:
一份完整的PyCharm图解教程

文章插图
 
 
Target directory、Test file name 和 Test class name 这三项均保留默认设置 。选中上图中两种需要测试的方法并点击 OK 。好了!PyCharm 自动创建文件 test_calculator.py , 并在其中创建了以下 stub test:
一份完整的PyCharm图解教程

文章插图
 
使用以下方法中的任意一个运行测试:
 
  • 在 Mac 系统中使用 Ctrl+R 键 , 在 Windows 或 Linux 系统中使用 Shift+F10 键 。
  • 右键单击背景 , 选择「Run 『Unittests for test_calculator.py』」 。
  • 点击测试类名称左侧的绿色小箭头 , 选择「Run 『Unittests for test_calculator.py』」 。
 
你将看到底部出现测试窗口 , 所有测试均失败:
一份完整的PyCharm图解教程

文章插图
 
注意 , 左侧是测试结果的层次结构 , 右侧是终端的输出 。现在 , 将代码更改成以下代码 , 实现 test_add:
一份完整的PyCharm图解教程

文章插图
 
 
重新运行测试 , 你会看到一个测试通过了 , 另一个则失败 。按照如下操作探索不同选项 , 来展示已通过测试和被忽略测试 , 按照字母顺序对测试进行排序 , 以及按照时长对测试进行排序:
一份完整的PyCharm图解教程

文章插图
 
注意 , 上图中的 sleep(0.1) 方法的作用是使其中一个测试变慢 , 以便按时长对测试进行排序 。
# 在 PyCharm 中编辑已有项目


推荐阅读