本文主要是介绍类编程01--使用面向对象实现测试框架,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
使用面向对象实现测试框架
目录结构
common -- main.py
conf -- db.conf entry.ini server.conf
excelcase -- login.xlsx signup.xlsx
initsqls -- login.sql signup.sql
log
类 与 函数
def log()
class Entry:
class ServerConf:
class DB:
def read_cases(casefile,columns=None)
def post(url,case_name,data,expect)
def test_login()
def test_signup()
面向对象的编程过程
创建类
构造方法(可以省略,要写的话必须写__init__(self),一般用于定义成员变量)
成员方法(可以省略,名字自己起,self参数必须写,而且写在第一个,用于处理数据)
创建对象
对象名=类名()
调用方法
对象名.成员方法()
面向对象编程实现测试框架
1)Entry类
构造方法
读取入口地址,存入成员变量:which_server、which_db
成员方法
get_which_server()
输出日志,返回接口服务器入口名which_server
get_which_db()
输出日志,返回数据库服务器入口名which_db
2)ServerConf类
构造方法
调用Entry类读取接口服务器入口名,存入变量:which_server
读取接口服务器配置信息,存入成员变量:host
host形式:http://ip:port
成员方法
get_host()
返回host
输出日志
3)DB类
构造方法
调用Entry类读取数据库入口,存入变量which_db
读取数据库配置信息,存入成员变量dbinfo(字典)
输出日志
成员方法
conn_db()
连接数据库,并返回连接对象
pymysql.connect(**字典)
如果写1个*会导致失败
输出日志
成员方法
get_sqlfiles(sqlfiles=[])
获得sql命令文件名列表
参数只接受列表形式
如果sqlfiles为空,则读取../initsqls下所有的文件,否则读取指定文件
输出日志
成员方法
read_sqls(self,sqlfiles=[])
获得指定sql命令文件中的sql命令到列表
参数只接受列表形式
调用get_sqlfiles,sqlfiles传递给get_sqlfiles
如果sqlfiles为空,则读取../initsqls下所有sql命令文件中的命令
输出日志
成员方法
init_db(self,sqlfile=[])
执行指定sql命令文件中的所有sql语句
参数只接受列表形式
调用read_sqls,sqlfiles传递给read_sqls
如果sqlfiles为空,则执行../initsqls下所有sql命令文件中的命令
输出日志
成员方法
check_db(self, sql, param, db_expect_rows)
落库检查
sql:预期sql语句
param:预期落库的参数
db_expect_rows:预期落库的行数
输出日志
输出sql、param(失败时输出)
将字典的键传递给函数形参
已定义函数
def func(k1,k2)
字典
d={'k1':value1,'k2':value2}
调用函数
func(**d)
说明
字典d中的键必须与函数func的形式同名且数量相同
1个*不出错,但建议写2个
将字典作为实参,传递给函数
"""
将字典作为实参,传递给函数
"""
def fun(k1,k2):
print(k1,k2)
# fun(3,5)
# fun([3,5])
# fun(*[3,5]) #*表示拆解数据,或者去掉中括号
# fun(*{'namen':'张三','age':23})# * 只能拆出到键
# fun(**{'name':'张三','age':23})# **表示拆出到值
fun(**{'k1':'张三','k2':23})# 键必须与函数形参同名
获得目录中的文件列表
os.listdir(目录)
获得目录中的所有对象列表,包括子目录和文件,但不会递归遍历到内部目录中(即只显示当前目录中的内容)
os.listdir获得的对象不含路径
列表推导式
files=['../initsqls/'+fil for fil in 列表]
将列表中的每一个元素前面加上../initsqls/,最后组成一个新列表
"""
查看所在当前目录中的内容
"""
# import os
# files = os.listdir()#列出当前目录中的所有的内容
# print(files)
#
# # a=[1,2,3,4,5]
# # b = [i*i for i in a]
# # print(b)
# a = [1,2,3,4,5,6,7,8,9]
# b = [i*i for i in a if i%2==0]#只求偶数的平方
# print(b)
import os
files = os.listdir('./')
fils = [f for f in files if f.endswith('.py')]# 以.py文件放入 fils
print(fils)
# demo03在哪个文件夹:接口sean(项目所在目录),称当前目录是接口sean,写为./
# 想读所有的sql文件名:位置是initsqls
import os
files = os.listdir('./initsqls')# ./就是接口测试sean,所以./initsqls代表接口sean/initsqls
files = ['./initsqls/' + f for f in files if f.endswith('.txt')]
print(files)
exit()
功能:退出程序,可放到异常处理部分,出现异常时,程序无需继续执行
print(123)
print(456)
print(789)
exit(0) # 正常退出
print(456789)
exit(-1)#携带异常退出
print(13121.0)
这篇关于类编程01--使用面向对象实现测试框架的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!