xml网站地图格式,电子商务网站建设及推广方案,wordpress4.2.15漏洞,wordpress双数据库python自带的logging实在是不好用#xff0c;推荐使用logbook思路如下#xff1a;1.创建path.py文件#xff0c;获取工程根路径2.创建log.py文件#xff0c;在工程根路径下创建日志文件(文件名称按日期命名)#xff0c;并设置log输出等级3.执行测试用例#xff0c;调用lo…python自带的logging实在是不好用推荐使用logbook思路如下1.创建path.py文件获取工程根路径2.创建log.py文件在工程根路径下创建日志文件(文件名称按日期命名)并设置log输出等级3.执行测试用例调用log文件具体实现如下1. path.py文件如下 获取项目的根路径os.path.abspath(path) 返回path规范化的绝对路径os.path.dirname(__file__) 获取当前运行脚本的绝对路径因为os.path.dirname(__file__)返回脚本的路径存在的问题:1)必须是实际存在的.py文件如果在命令行执行则会引发异常NameError: name __file__ is not defined2)在运行的时候如果输入完整的执行的路径则返回.py文件的全路径如Python c:/test/test.py 则返回路径 c:/test 如果是python test.py 则返回空所以 结合os.path.abspath用效果会好os.path.dirname(os.path.abspath(__file__)),os.path.abspath(__file__)返回的是.py文件的绝对路径这就是os.path.dirname(__file__)的用法其主要总结起来有:1)不要已命令行的形式来进行os.path.dirname(__file__)这种形式来使用这个函数2)结合os.path.abspath()使用importosdeffile_path():root_path os.path.dirname(os.path.abspath(__file__))project_path root_path[:root_path.rfind(requests) len(requests)]return project_path2.log.py文件如下os.path.join(path, log) 是指将path和 log字符串组合成文件目录,比如最终结果为 F:\requests\logimportlogbookimportosfrom logbook.more importColorizedStderrHandlerfrom tools.path importfile_pathpathfile_path()LOG_DIR os.path.join(path, log)if notos.path.exists(LOG_DIR):os.makedirs(LOG_DIR)#如果log不存在在当前路径下创建一个log文件夹def get_logger(nameTest, file_logTrue, level):logbook.set_datetime_format(local)ColorizedStderrHandler(bubbleFalse, levellevel).push_thread()iffile_log:logbook.TimedRotatingFileHandler(os.path.join(LOG_DIR,%s.log %name),date_format%Y-%m-%d-%H, bubbleTrue, encodingutf-8).push_thread()returnlogbook.Logger(name)LOG get_logger(file_logTrue, levelINFO)if __name__ __main__:LOG.error(Log-info)3. 接口用例执行中调用log文件此处先说一个接口调用有两种类库urllib2 和requestsurllib2 处理编码太麻烦比起来还是选择简洁明快的requestsRequests 使用的是 urllib3继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池支持使用cookie保持会话支持文件上传支持自 动确定响应内容的编码支持国际化的 URL 和 POST 数据自动编码。Requests的使用相当简单直接用requests.post(url,data)可见下面的例子importrequestsdefold_login():#登陆接口url https://*****/api/loginparams{cc: 86,phone: 1771019****,password: 12345678}res requests.post(url, dataparams)print(res.text)#登陆后查看账号信息url2 https://*****/api/accountrrequests.get(url2)print(账号信息是, r.text)old_login()#返回结果如下{code:0,msg:null,data:{uid:5adf5c6a267f40448bb5b0022db94af7,name:王元元,type:NORMAL}}#账号信息是 {code:-4001,msg:登录token无效,data:null}#第二条因为没有获取到session登陆态导致报错可以看到当第二条请求的接口需要登录态但是无法获取此时requests有个特别棒的功能是 可以直接使用requests.session() 保存登录态具体可见下面importrequestsfrom tools importlogclassMsg:def __init__(self):self.Loglog.LOGself.sessionrequests.session()defmsg_get(self,url):get_msg self.session.get(urlurl)self.Log.info(code:str(get_msg.status_code))self.Log.info(time:str(get_msg.elapsed.microseconds/1000)ms) # 获取接口响应的时间self.Log.info(get_msg.text)defmsg_post(self, url, data):post_msg self.session.post(urlurl, datadata)self.Log.info(code:str(post_msg.status_code))self.Log.info(time:str(post_msg.elapsed.microseconds/1000)ms)self.Log.info(post_msg.text)msgMsg()data{cc: 86,phone: 1771019***,password: 1q2}msg.msg_post(url https://*****/api/login,datadata )msg.msg_get(urlhttps://****/api/account)以上over ~