1、python代码的执行
python的代码是从上到小运行的,运行到第七行的时候,发现调用了一个方法,就返回那个方法去,将传过来的参数1给a,1给b,执行方法里边的内容,返回1+1,所以方法的返回值就等于2,即a=2
2、python中的异常处理
异常处理在之后学习自动化的时候经常遇到,要理清异常处理代码的执行流
python的异常处理主要有两种形式:try/except和try/except/else/finally
2.1、异常处理:try/except
先执行try里边的代码,如果发现try里边的代码报错了就跳出来执行except里边的代码
如果try里边的代码没有报错,那就执行try里边的代码,不执行except里边的代码
2.2、还有try/except/else/finally(try和except是必选的,else和finally是可选的,但是如果有finally的话,是必须要执行的)
没报错的时候执行try-else-finally
报错执行except-finally
即:报错:try>except>finally(报错的时候try里边的不打印)
没有报错: try> else > finally
except可以有多个,表示多种不同的异常
3、pymsql
python的第三方包:pymysql
pymysql就是使用python操作mysql数据库,相当于python的navicat
pymysql主要是为接口自动化测试服务的
3.1、步骤:
1、安装pymysql包:以管理员身份运行cmd,输入安装命令:pip3 install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple
2、导入包,封装对应的查询、修改、删除、插入代码
将这些放到单独的一个.py文件中,之后要用的时候直接调用即可,比如我就将它放到了dbtools.py文件中
#导入pymysql import pymysql #封装查询方法 def query(sql): #1、连接MySQL数据库 db = pymysql.connect(host = "127.0.0.1",user="root",password = "123456",db = "test25") #实现打开数据库的操作 #2、获取对应的查询窗口 cur = db.cursor() #3、执行查询sql语句 cur.execute(sql) #4、获取所有的结果 res = cur.fetchall() #5、关闭数据库连接 db.close() return res #测试query方法 if __name__ == "__main__": sql = "select * from student where id = 1" r = query(sql) print(r)
3、应用:调用封装好的查询方法模拟接口登陆的完整过程(调接口)
#模拟接口登陆的完整过程(调接口) #两个文件在同一模块下相互导入(兄弟关系) from dbtools import query u = input("请输入账号:") p = input("请输入密码:") sql = "select * from t_pymysql_account where username = '{}' and password = '{}'".format(u,p) #注意拼接 res = query(sql) if len(res) != 0: print("登陆成功") else: print("登录失败")
sql参数问题:sql语句中可能也会带有引号的,但是在代码中也有引号,这就冲突了,解决办法:不相同原则,里边外边一单一双,也可以在sql语句中引号前面加反斜杠转义
例如:sql = "select * from t_pymysql_account where username = '{}' and password = '{}'".format(u,p)中的'{}'是SQL语句本身就有引号,这里冲突了
查询的结果返回值类型是元组,每一个小元组就是对应的数据库中的一行数据:((行1),(行2),(行3)。。。)如果没有结果的话,查询返回的是空元组
这里就引申出了,如果我们去查询一个接口自动化测试,去查用户名和密码是否匹配,如果查到了,那返回值肯定就不为0,没查到肯定就为0了,所以我们可以根据长度来进行判断