欢迎关注公众号 学习资料不会少
PyCharm
工欲善其事,必先利其器。好的开发工具,会令代码编写成为一件轻松而愉快的事情,能显著提高编程效率。这里向读者介绍两款工具,一款是重量级工具,另一款是轻量级工具。下面分别是这两款工具的代码风格,图5-4-1 所示的是PyCharm, 图5-4-2所示的是 Sublime Text 3.
try:
if link_type =0:
self.conn=pymysql.connect (host=host_db,user=user _db.passwd=passwd_db.db=name_db, port=port_db,
charset=’utf8’, cursorclass=pymysql. cursors. DictCursor)#创建数据库链接,返回元祖
else:
self.conn = pymysql.connect (host=host_db,user=user _db.passwd=passwd_db.db=name_db, port=port_db,
charset=’utf8’) #创建数据库链接,返回元祖
self.cur=self.conn.cursor( )
except pymysql.Error as e:
print (" 创建数据库连接失败|Mysql Error %d: %s" (e. args[0], e. args[1]))
Logging.basicConfig(filenane=config.src_path+‘/log/syserror.log’,level=logging. DEBUG, format =' (asct
logger=logging, getlogger (_nane_)
Logger.exception (e)
▲图5-4-1 PyCharm
try:
self.conn-MySQLdb.connect(host=host_db,user=suser-db, passwd=passwd-db,
if link_type==0:
self.cur=self.conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
else:
self.cur=self.coon.cursor( )#返回元祖
except MysQLdb.Error as e:
print (u" 创建数据库连接失败|Mysql Error %d: %s" % (e.args[0], e.args[1]))
Logging. basicConfig (filename = os. path. join (os.getced(),’./log/syserro
logger = logging. getLogger (_name_)
logger.exception(e)
▲图5-4-2 Sublime Text 3
5. 4. 1 为什么选择PyCharm
PyCharm 有以下优点:
1. PyCharm拥有一般IDE所具备的功能,比如,调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制···
2.PyCharm还提供了一些很好的功能,可用于Django 开发及其他 Web 开发框架。
3. 对初学者而言,PyCharm 比较完整,使用成本低,不需要安装额外的插件。
4.对有基础者而言,PyCharm与其他工具类似,切换成本低。
PyCharm 的缺点是:占用资源多。
5. 4. 2 PyCharm使用基础
1. 新建工程、文件
该步骤已经在5. 2. 2小节详细介绍过,这里不再赘述。
2. 代码运行
运行指定的py代码文件,在代码名称或者代码中的任何地方单击鼠标右键,从弹出的快捷菜单中选择“Runxxx”命令,如图5-4-3所示。
▲图5-4-3在PyCharm中运行代码文件
在PyCharm中会显示输出信息,如图5-4-4所示。
‘导出接口数据配置’,
‘update_time’:datetime.datetime(2018,3,7,23,:
1,2]}}”,’status’:1,’create_time’datetime.datetime(2017,9,10,20
:test}}。检查级别中[0,1]代表code和参数完整性检查,执行级别中[0,1]分别
’value_config’:’mytestll’,’status’:1,’create_time’:None,’id’:
‘status’:0,’create_time’:None,’id’:11,’description’:’我的测试2’
[]执行单条查询操作成功
▲图5-4-4 显示输出信息
3. 调试代码
调试代码(俗称“打断点”) 是程序开发中重要的一环,可以帮助开发者定位和查找问题,是开发者必须要会的技能之一。在PyCharm中可按照以下步骤调试代码。
(1) 在想要调试的代码区域前/后单击鼠标,即“打断点”, 如图5-4-5所示。
51 #查询表中单条数据
52 def SelectOne(self,condition):
53 ’’’... ’’’
57 try:
58 rows_affccet=self.cur.execute(condition)
▲图5-4. 5“打断点”
(2) 开启调试模式,即在代码中的任意位置单击鼠标右键,在弹出的快捷菜单中选择“Debugxxx”命令,如图5-4-6所示。
▲图5-4-6 开启调式模式
(3) 按F8 键开始调试代码。当代码运行到开始调试的位置时,每按一次F8键就执行一步。在这个过程中,可以通过下方的 Debugger 窗口查看过程数据,如图5-4-7所示。
Variables
condition={str}’SELECT*FROM config_total WHERE id=1’
rows_affect={long}1
self= {operationdb_interface)<_main_.operationdb_interface object at>
▲图5-4-7 查看过程数据
(4) 在调试过程中,系统会用蓝色底色标志出下一步要执行的代码,提示调试者即将走到哪一步。而Debugger 窗口中的蓝色文字,则表示当前代码执行的结果。例如,图5-4-8中所示的第59行代码是将要执行的,而 Debugger 窗口中蓝色字体的 rows_affect 则是已经执行的第58行代码的结果。
Variables
condition={str}’SELECT*FROM config_total WHERE id=1’
rows_affect={long}1
self={operationdb_interface)<_main_.operationdb_interface object at>
▲图 5-4-8 查看进度
(5) 在中断调试后,需要关闭调试模式,否则会开启很多调试窗口,影响其他调试过程的判断。关闭的方法如图5-4-9所示。
Variables
condition={str}’SELECT*FROM config_total WHERE id=1’
rows_affect={long}1
self= {operationdb_interface)<_main_.operationdb_interface object at>
▲图5-4-9 关闭调试模式
4. 代码跳转
代码跳转可以帮助我们查看所调用的方法或者函数本身的代码。设置代码跳转的方法是:在按住Ctrl键的同时单击该方法或函数。例如,在opmysql.py中使用了 PyMySQL,如图5-4-10所示。
12 class OperationDbInterface(object):
13 #定义初始化连接数据库
14 def _init_(self,host_db='192.168.0.104".user_db='root',passwd
15 " " "..." " "
16 _db='root'
24 try: variable"_init_py"
25 if link type
26 self.conn=pymysql。connect(host_db,user=user_db,passwd
▲图5-4-10 代码跳转
补充知识点
5.5.1 MySQLdb与PyMySQL
MySQLdb与PyMySQL 都是在Python 中操作 MySOL 数据库的包,只不过二者所支持的Python版本不同。MySQLdb支持Python 2, PyMySOL 支持Python 3.这是读者需要注意的地方。
5.5.2 Python 命名规则
(1) 模块或包全部使用小写字母的命名方式,并且以下画线分隔单词,如:get_sign。
(2) 类或异常使用每个单词首字母大写的命名方式,如:OperationDblnterface。
(3) 全局或类常量全部使用大写字母的命名方式,并且以下画线分隔单词。
(4) 其余变量(包括方法名、函数名和普通变量名)则是全部使用小写字母的命名方式,并且以下画线分隔单词,如:op_sql。
(5) 以上的内容如果是Python 内部的,则使用双下画线开头命名,如:_ _init_ _,_ _del_ _。
5.5.3 self.cur.scroll 源码分析
如果在 select_all 方法中用到了 self.cur.scroll (O,mode='absolute’) , 那么在运行代码时要将游标的索引加到初始位置,具体介绍如下:
self.cur.execute (condition) #在游标下执行 SQL 语句
self.cur.scroll (0,mode='absolute') #让游标的索引回到初始位置
results =self.cur.fetchall () #返回游标中的所有结果
假如测试数据库表中的数据有3条,则表结构如图5-5-1所示。
▲图5-5-1 表结构与数据查询
(1) 在游标下执行SQL 语句,则执行的结果被先放在游标中。
(2) 在游标下执行scroll 方法,如果不清楚这一步具体是做什么的,则可以先看 Python源码是怎么解释的,如图5-5-2所示。
def scroll(self,value,mode='relative'):
" " "Scroll the cursor in the result set to a new position according
to mode.
If mode is 'relative' (default),value is taken as offset: to
the current position in the result set, if set to 'absolute',
value states an absolute target position." " "
self._check_executed()
if mode ==' relative'
r = value
else:
self.errorhandler(self. ProgramingError,
unkonow scroll mode %s " % repr(mode))
if r < 0 or r>=len(self._rows):
self.errorhandler(self,IndexError. " out of range")
self.rownumber=r
▲图5-5-2 scroll 方法的源码
(3) 在游标下执行fetchall 方法,看一下 Python 源码是怎么解释的,如图5-5-3所示。
def fetchall(self):
" " "Fetchs all available rows from the cursor. " " "
self._check_executed()
if self.rownumber:
result = self._rows[ self.rownumber:]
else:
result = self._rows
self.rownumber = len(self.rows)
return result
▲图5-5-3 fetchall 方法的源码
(4) 设置游标的位置。
可以通过 cursor.scroll (position,mode="relative|absolute") 方法,来设置相对位置游标和绝对位置游标。
方法参数描述:
①position: 游标位置(游标位置从0开始)。
② mode: 游标位置的模式,包括以下两种。
● relative: 默认模式,相对当前位置(即执行 scroll 方法时游标的位置)。
● absolute: 绝对位置。
例如:
mode=relative,position=1: 设置游标位置为“当前位置+1”, 即向下移动一个位置。
mode=absolute,position=2: 将游标移动到索引为2. 的位置,无论当前位置在哪里。
往期精彩文章
喜报来了!凡猫学员薪资最高16K!
金融行业软件测试介绍
2020年为什么大家都开始学习自动化测试?
学习测试开发前 你需要掌握的python 代码水平
1万+软件测试人员都在学的精品课程免费送,大家别错过