当前位置: 首页 > news >正文

软件测试学习笔记丨Pycharm运行与调试

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/23454

Pycharm作为集成开发环境,除了可以编写脚本,还可以运行和调试自己的代码,下面就为大家介绍一下pycharm运行和调试代码的功能如何使用。

代码运行

编写好我们的代码之后,我们肯定是需要去运行的,pycharm提供了几种运行代码的方式,主要有以下几种方式。
假设编写好了一个名为demo.py的,输出九九乘法表的代码文件,内容如下:

for i in range(1, 10):for j in range(i, 10):print(str(i) + '*' + str(j) + '=' + str(i * j) + ' ', end='')print()

我们如何运行这个脚本呢?

右键Run运行

直接在要运行的py文件中右键,点击Run即可, 或者使用默认快捷键Ctrl + Shift + F10

导航栏Run执行

如果之前执行过某个程序,在这里是可以看到的,选择要执行的程序,点击绿色的三角形即可运行。
如果是一个新的脚本,则点击Edit Configurations进行配置,这个在前面的菜单栏 Run章节中有讲过

1.Name: 可以自己随意起名
2.Script Path: 项目的文件路径
3. Python interpreter:Python解释器的路径
4. Workding directory:项目路径

通过入口函数启动运行

如果程序中有入口函数,会在左侧有个绿色的小三角形,点击选择Run 项目名即可启动

上述3种方式都能成功运行脚本,输出九九乘法表。

代码调试Debug

Bug大家都知道是程序中的错误,bug的存在导致程序不能正常运行。而DeBug的字面意思就是解决Bug。
代码调试的方式与运行脚本的方式类似,主要也是三种方法。

右键Debug

导航栏Debug

点击导航栏绿色的小虫图标即可Debug运行。

通过main启动debug

如果程序有main函数入口,可以点击左侧的绿色小三角,然后选择上图标识的Debug 项目名即可。

断点

如果Debug的程序没有断点,则跟正常的执行没有区别。
断点:一个断点标注一个代码行,当程序执行到断点所在行时,会被挂起,方便查看项目中各参数的值,运行结果等信息

如何打断点

如下图所示,在红框标注的地方,行号后面的位置单击,即可添加一个断点(显示红色圆点),运行的时候会在这里暂停。

如下图,在第12行打了一个断点,通过Debug执行脚本。

通过变量面板的信息我们可以得到以下信息

  • 执行到第11行,index的值为 2,
  • 当前循环为第一次循环,i的值为0
  • identifying_code还未被赋值,依旧是空字符串""

调试按钮

调试面板如上图所示,每个按钮的意思如下,将鼠标悬停在对应的图标上,可查看快捷键
1:Show Execution Point,跳转到当前程序所执行的地方(快捷键Alt + F10),如果在别的页面,只需要按一下这个按钮就会回到程序所执行的地方。
2:Step Over,依次往下执行代码(快捷键F8),不进入函数;顺序执行,如果某一行代码调用了别的函数,则不会进入那个函数。
3:Step Into,顺序执行,会进入函数(快捷键F7);当某一行代码调用了其他函数,则会进入那个函数或者源码中。
4:Step Into My Code, 顺序执行,进入自己写的代码中(快捷键Alt + Shift + F7),与上面的区域是只会进入自己写的代码中,不会进入源代码中
5:Step Out,跳出当前函数(快捷键Shift + F8),配合编号3、4当程序运行到函数体中,可以迅速跳出当前函数,回到程序执行的地方
6:Run To Cursor,运行到光标位置并暂停(快捷键Alt + F9),此时光标在哪,程序就会运行到那个地方,并挂起(暂停)
7:Evaluate Expression, 计算表达式(快捷键Alt + F8); 鼠标选中一段代码,点击7号按钮,或者右键选择Evaluate Expression,然后在弹窗中,点击Evaluate就可以计算出当前选中表达式的值。

Debug控制面板

  1. Rerun xxx,重新debug运行程序
  2. Resume Program,跳过当前断点,直接运行到下一断点处,快捷键:F9
  3. Stop xxx,停止并关闭当前Debug程序
  4. View Breakpoints,查看当前所有设置的断点
  5. Mute Breakpoints,停用所有断点(此时断点由红色变为灰白色)

DeBug Console面板

在DeBug执行的时候,在Console中有个按 钮如下图蓝色箭头标注所示Show DeBug Console,可以在右侧终端中输入变量的值或者表达式,按回车之后,会返回相应的结果。

设置断点属性

在断点的小红点上右键,我们会发现这样一个界面

通过配置Condition中的内容,当程序符合Conditioin中的条件时,才会在当前断点暂停(挂起)
比如,上面代码,我设置i = 2时,函数挂起,设置如下,然后点击Done设置生效

在这里插入图片描述

Debug执行程序,效果如下

在这里插入图片描述

推荐学习

【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)

【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)

【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)

【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试

【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff

【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享

【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装

【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?

【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!

【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我

【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化

【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试

【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !

【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置

【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)

相关文章:

软件测试学习笔记丨Pycharm运行与调试

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/23454 Pycharm作为集成开发环境,除了可以编写脚本,还可以运行和调试自己的代码,下面就为大家介绍一下pycharm运行和调试代码的功能如何使用。 代码运行 编…...

flask基础学习

一、Python之flask、Django、Tornado框架 一)django 主要是用来搞快速开发的,他的亮点就是快速开发,节约成本。 正常的并发量不过10000,如果要实现高并发的话,就要对django进行二次开发,比如把整个笨重的框…...

【SSM详细教程】-04-Spring基于注解的组件扫描

精品专题: 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课…...

Keepalived:构建高可用性的秘密武器

Keepalived:构建高可用性的秘密武器 在现代的IT环境中,高可用性是确保业务连续性和用户体验的关键要素。一旦系统出现故障或停机,企业可能会面临巨大的经济损失和声誉损害。因此,实施高可用性解决方案至关重要。Keepalived作为一…...

【C++刷题】力扣-#228-汇总区间

题目描述 给定一个整数数组 nums,返回所有唯一的区间,这些区间包含数组中的每个数字,形式为 [a, b],其中 a 和 b 是数字的最小和最大值。 示例 示例 1: 输入: nums [0,1,2,4,5,7] 输出: [["0,2"],["4,5"],…...

交通银行核心系统分布式实践

1、背景:客户需求和痛点 交通银行已有核心ECIF、贷记卡核心、借记卡新核心等数百套系统上线OceanBase分布式数据库。其中,贷记卡(俗称信用卡)属于 A类核心业务系统,支撑了信用卡授权、用卡、额度、账务等核心业务功能,约7千万卡量,日交易量和数据量都在千万级别。 交通银行…...

深入剖析:.Net8 引入非root用户运行的新特性提升应用安全性

在云原生的时代,容器化技术如Docker和Kubernetes已经成为现代软件开发的重要基石。随着.Net8的发布,微软进一步优化了这些环境的支持,特别是在提升容器应用安全性方面迈出了重要一步。本文将深入探讨.Net8中非根用户功能的新增特性&#xff0…...

多签机制简明理解及实例说明

目录 Multisignature机制简明理解及实例说明 Multisignature机制中的公钥、私钥、Nonce及签名验签详解 加密货币托管账户的多重签名机制 Multisignature机制简明理解及实例说明 一、基本概念 Multisignature(多重签名)机制是一种先进的加密技术,它允许一笔交易必须由多…...

PCL 点云配准 LM-ICP算法(精配准)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 法线计算函数 2.1.2 执行 LM-ICP 函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新&a…...

Mac 编译 Unreal 源码版本

在Mac上编译Unreal Engine源码需要遵循以下步骤: 安装必要的依赖项: Xcode Python(建议使用2.7版本) Java(使用JDK 8) CMake Ninja SVN(用于获取某些依赖项) 获取Unreal Engi…...

开源vGPU方案 HAMi实现细粒度GPU切分——筑梦之路

前言 为什么需要 GPU 共享、切分等方案? 在使用GPU的过程中我们会发现,直接在裸机环境使用,都可以多个进程共享 GPU,怎么到 k8s 环境就不行了? 1. 资源感知 在 k8s 中资源是和节点绑定的,对于 GPU 资源…...

性能测试工具JMeter

本次使用的博客系统的url: http://8.137.19.140:9090/blog_edit.html 1. JMeter介绍 环境要求:要求java,jdk版本大于8; Apache JMeter 是 Apache 组织基于 Java 开发的压⼒测试⼯具,⽤于对软件做性能测试&#xff1b…...

Kubernetes ETCD的恢复与备份

在 Kubernetes 中,ETCD 扮演着至关重要的角色: 1. 集群状态存储 2. 服务发现 3. 配置管理 4. 分布式锁和协调 5. 故障恢复 ETCD 存储了 Kubernetes 集群中所有的状态信息,包括节点、Pod、Service、ConfigMap、Secrets 等。ETCD 支持服务发现…...

笔记整理—linux网络部分(2)Linux网络框架

前文说过,在OSI中将网络分为7层,这是理论上将其分为7层,但实际上可以将其分为4层。如TCP协议就是将其分为4层。理论只是提出一种指导意见,但不是行业范本。 驱动层只关系有没有接到包,不关心包经过多少次转发&#xff…...

深度学习500问——Chapter17:模型压缩及移动端部署(5)

文章目录 17.9.5 ShuffleNet- v1 17.9.6 ShuffleNet- v2 17.10 现有移动端开源框架及其特点 17.10.1 NCNN 17.10.2 QNNPACK 17.9.5 ShuffleNet- v1 ShuffleNet 是Face团队提出的,晚于MobileNet两个月在arXiv上公开《ShuffleNet: An Extremely Efficient…...

分布式ID多种生成方式

分布式ID 雪花算法(时间戳41机器编号10自增序列号10) 作用:希望ID按照时间进行有序生成 原理: 即一台带有编号的服务器在毫秒级时间戳内生成带有自增序号的ID,这个ID保证了自增性和唯一性 雪花算法根据结构的生成ID个数的上线时…...

时间序列预测(六)——循环神经网络(RNN)

目录 一、RNN的基本原理 1、正向传播(Forward Pass): 2、计算损失(Loss Calculation) 3、反向传播——反向传播通过时间(Backpropagation Through Time,BPTT) 4、梯度更新&…...

Day2算法

Day2算法 1.算法的基本概念 算法: 对特定问题求解步骤的一种描述,他叔指令的有限序列,其中的每条指令表示一个或多个操作。 算法的特性: 1.有穷性: 一个算法必须总在执行有穷步之后结束,且每一步都可…...

智洋创新嵌入式面试题汇总及参考答案

堆和栈有什么区别 内存分配方式 栈由编译器自动分配和释放,函数执行时,函数内局部变量等会在栈上分配空间,函数执行结束后自动回收。例如在一个简单的函数int add(int a, int b)中,参数a和b以及函数内部的一些临时变量都会在栈上分配空间,函数调用结束后这些空间就会被释放…...

无线网卡知识的学习-- wireless基础知识(nl80211)

1. 基本概念 mac80211 :这是最底层的模块,与hardware offloading 关联最多。 mac80211 的工作是给出硬件的所有功能与硬件进行交互。(Kernel态) cfg80211:是设备和用户之间的桥梁,cfg80211的工作则是观察跟踪wlan设备的实际状态. (Kernel态) nl80211: 介于用户空间与内核…...

SwitchyOmega+Burp无感抓包实战:解决HTTPS拦截与流量路由难题

1. 为什么“无感抓包”是BurpSuite日常使用的分水岭刚接触Web安全测试的朋友常有个错觉:装上Burp Suite,配好代理,打开浏览器,点几下网页——流量就该自动进来了。结果现实是:首页打不开、登录态丢失、HTTPS报错满屏、…...

如何用SMUDebugTool彻底掌控你的AMD Ryzen处理器性能调优

如何用SMUDebugTool彻底掌控你的AMD Ryzen处理器性能调优 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.co…...

自制射频功率计:基于AD8317芯片,成本43欧元实现1MHz-10GHz测量

1. 项目概述:为什么我要亲手打造一台射频功率计在无人机和模型飞行器的圈子里,尤其是在我们荷兰FMS Spaarnwoude俱乐部,合规飞行是头等大事。我给我的八轴飞行器加装了云台相机和图传系统,工作在5.8GHz频段。根据本地法规&#xf…...

Java数组工具类实战:设计不可实例化的静态工具类

实现一个工具类 MathUtils,满足以下要求: 1. 所有方法均为静态,且该类不能从外部实例化(提示:使用私有构造器)。 2. 提供三个静态方法:- maxArray(int[] arr):返回较大值&#xff1b…...

万星easy-vibe:描述需求即发布 零基础无需学语法

开源Easy-Vibe是一套开源AI编程学习方案,把学习顺序从先学语法再做项目翻转为直接做项目。文章拆解了项目驱动、提示词编写、AI编辑器和多Agent协作的完整流程,解释了为什么想法比语法更重要。 github上datawhalechina/easy-vibe:它在GitHub…...

Lovable内部工具开发方法论(从需求黑洞到用户自发推广的完整闭环)

更多请点击: https://kaifayun.com 第一章:Lovable内部工具开发方法论(从需求黑洞到用户自发推广的完整闭环) Lovable 方法论的核心不是交付功能,而是培育“工具依赖感”——当一线工程师在凌晨三点调试线上问题时&am…...

PostgreSQL Merge Join 大白话详解

用生活中最直观的例子,彻底搞懂 Merge Join 是什么、为什么快、什么时候用。一、先从生活场景开始 场景一:两摞乱序试卷找同学 期末考试,老师手里有两摞试卷: A 摞:数学试卷,500 份,乱序堆放B 摞…...

ComfyUI-WD14-Tagger:AI智能图像标签提取的终极完整指南

ComfyUI-WD14-Tagger:AI智能图像标签提取的终极完整指南 【免费下载链接】ComfyUI-WD14-Tagger A ComfyUI extension allowing for the interrogation of booru tags from images. 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-WD14-Tagger 在AI图像…...

Agent 一接文档批注就开始改错位置:从 Annotation Anchor 到 Suggestion Scope 的工程实战

Agent 对接文档协作平台时,批注是最危险的操作之一。生产环境里,Agent 收到"在第三段加批注"的指令,结果批注挂到第二段末尾,甚至覆盖已有评论。更隐蔽的是,Agent 以作者 A 登录,批注却显示作者 …...

从subprocess报错聊起:我是怎么给NX盒子里的Python脚本做‘版本体检’和‘降级手术’的

从subprocess报错聊起:我是怎么给NX盒子里的Python脚本做‘版本体检’和‘降级手术’的 那天下午,当我正试图在NVIDIA Jetson NX上部署一个图像处理流水线时,终端突然抛出一行刺眼的红色错误:TypeError: __init__() got an unexpe…...