python + requests :接口自动化框架入学
https://my.oschina.net/u/3041656
python,现在越来越多的作为自动化测试的一个重要工具,所以呢作为入门的一个简单的自动化测试框架的搭建需要掌握,这里呢给大家简单的展示一下:
对于要做的东西,要想管理方便,那么业务和数据 做好分离保管,方便维护。
摘要:
建立一个目录存放你要做的数据和业务
common:存放一些共通的方法
result:执行过程中生成的文件夹,里面存放每次测试的结果
testCase:用于存放具体的测试case
config:配置一些常量,例如数据库的相关信息,接口的相关信息等
readConfig: 用于读取config配置文件中的内容
runAll:用于执行case
1.
接口请求一般都会跟数据库交互所以,我们要把需要的信息写到cofg.ini里面
[DATABASE] #-----》是一个section的名字 读取配置的时候用到
host = 172.16.33.205
username = game_admin
password = bHYACbxgM2gWHnF6Il1nX8VnNEfb51KY
port = 3307
database = game_invoice
[HTTP]
# 接口的url
baseurl = http://XXXXXX
port = 8080
timeout = 1.0
2. readCf.py用来读取配置文件的配置信息
import os
from configparser import ConfigParser
# *_*coding:utf-8 *_*
__author__ = "Test Yunzhe"
# 用os模块来读取
dirpath = os.path.realpath(os.getcwd()) # 获取改目录的绝对路径
inipahth = os.path.join(dirpath, 'confg.ini')
class read_cf:
def __init__(self):
# 要读取配置文件的内容就要用配置文件类来读取 在构造函数里面添加
self.confg = ConfigParser() # new 了一个对象
self.confg.read(inipahth)
def get_http(self, option):
# 这里的option 是[HTTP] section里定义的各种配置参数名字
return self.confg.get("HTTP", option)
def get_data(self, option):
return self.confg.get("DATABASE", option)
1和2 是一个基本的操作 所以这里很容易掌握
3. 封装一个log类 对于操作记录做一个记录打印
import logging
import os
import logging
import threading
import readconf
from readconf import Read_conf
class Logg:
def __init__(self):
global dirp, logpath, resultpath
dirp = readconf.jdpath
self.log = logging.getLogger()
self.log.setLevel(logging.DEBUG)
self.log.setLevel(logging.INFO)
resultpath = os.path.join(dirp, 'log')
print(resultpath)
ss = os.path.exists(resultpath)
print(ss)
if not ss:
os.mkdir(resultpath)
# 创建一个hander
hander = logging.FileHandler(os.path.join(resultpath, 'out.log'))
# defined formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# defined formatter
hander.setFormatter(formatter)
# add handler
self.log.addHandler(hander)
class Mylog:
log = None
mythread = threading.Lock
def __init__(self):
pass
@staticmethod
def getlog(self):
if Mylog.log is None:
Mylog.mythread.acquire()
Mylog.log = Logg()
Mylog.mythread.release()
return Mylog.log
4.
https://gitee.com/null_534_6629/interfacetest/tree/master
https://my.oschina.net/u/3041656