Java教程

类编程01--使用面向对象实现测试框架

本文主要是介绍类编程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--使用面向对象实现测试框架的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!