发布博客只是记录下自己对自动化测试框架的一个经历过程,框架整体是有Python+unittest框架完成的,一开始也是网上看看别人的框架代码,然后下载下来一脸懵,各种报错,不知道从哪开始,逐渐也是一一解析,最后完成了适合自己的自动化框架。
注:框架部分引用于互联网分享,若有雷同,就是我抄袭的╭(╯^╰)╮
common:是一些公共的封装方法
HttpTestReport:是存放自动生成的html测试报告
Log:日志及日志存放
Testcase:测试脚本
TtestFile:测试用例.xml存放位置
1.config.ini中配置相关属性,由common内各种方法调用,
2.手工按模板编写测试用例(一般情况下不需要修改脚本,只需要修改脚本数量与用例数量符合)
3.runall调用封装好的方法,自动调取测试用例文件给测试脚本
4.自动生成测试报告
5.自动发邮件到qq邮箱。
代码片
.
# -- coding: utf-8 --
import requests
import json
class Webrequests():
def get(self,url,data,headers):
try:
r = requests.get(url,params=data,headers=headers)
r.encoding = 'utf-8'
json_r = r.json()
print("Test执行结果:",json_r)
return json_r
except BaseException as e:
print("请求失败!",str(e))
def post(self,url,data,headers):
try:
r = requests.post(url,data=data,headers=headers)
r.encoding = 'utf-8'
json_r = r.json()
print("Test执行结果:",json_r)
return json_r
except BaseException as e:
print("请求失败!",str(e))
def post_json(self,url,data,headers):
try:
data = json.dumps(data)
r = requests.post(url,data=data,headers=headers)
r.encoding = 'utf-8'
json_r = r.json()
print("Test执行结果:",json_r)
return json_r
except BaseException as e:
print("请求失败!",str(e))
def run_main(self, method,url,data,headers):
result = None
if method == 'post':
result = self.post(url,data,headers)
elif method == 'get':
result = self.get(url,data,headers)
elif method == 'post_json':
result = self.post_json(url, data, headers)
else:
print("method值错误!!!")
return result
外界调用的时候,直接调取run_main方法,传相关参数
第一章先写到这里吧,后期逐渐更新,给大家看下运行的run类,以及生成的报告
class AllTest:
def __init__(self):
log.info("*********测试执行开始*********")
def run(self):
try:
case_dir = os.getcwd() + '\Testcase'
testcase = unittest.TestSuite()
discover = unittest.defaultTestLoader.discover(case_dir, pattern='test*.py', top_level_dir=None)
for test_suit in discover:
for test_case in test_suit:
testcase.addTest(test_case)
report_path = os.getcwd() + '\HttpTestReport'
now = time.strftime('%Y-%m-%d %H%M%S')
fp = open(os.getcwd() + '\HttpTestReport\HttpTest' + now + '.html', 'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'自动化测试报告', description=u'测试用例执行情况:', tester=u"测试员")
runner.run(testcase)
fp.close()
print("测试报告生成成功,请查收···")
print("%s" % report_path)
log.info("测试报告生成成功,请查收···")
log.info("%s" % report_path)
email_name = re.findall(r"name='(.+?)'>",str(fp))
report_name = email_name[0][-30:]
if on_off == 'on':
send_mail.send(email_name[0],report_name)
log.info("测试报告邮件已发送成功,请查收···")
else:
log.info("测试报告邮件发送失败···")
except Exception as ex:
print("测试报告生成失败。错误内容:%s"%ex)
这是由HTMLTestRunner生成的报告,这是优化过得,汉化显示,也方便阅读美观。
我不是大佬,只是一个努力钻研问题的小萌新,大家如果感兴趣,我会继续后面分享具体的设计步骤以及思路。