# -*- coding: utf-8 -*-
from base.runmethod import Run_method
from data.get_data import GetData
from util.common_util import CommonUtil
from data.dependent_data import Dependent_data
from util.send_email import Send_email
from dataconfig.get_token import Get_token
class Runtest:
def __init__(self):
self.run_method = Run_method()
self.data = GetData()
self.com_util = CommonUtil()
self.send_mail = Send_email() #以上就是很明显的实例化类
#程序执行的入口
def go_on_run(self):
res = None #res代表接口运行结果,先给个空值
pass_count = [] #与预期值相同的行号,也就是接口测试通过的行号列表
fail_count = [] #与上一个相反
rows_count = self.data.get_case_lines() #拿到行号是多少,也就是共计多少条case
for i in range(1,rows_count): #range函数我在上一篇里写了,可以去看
is_run = self.data.get_is_run(i) #读excel看这条case是否需要运行
if is_run: #这样写就是一定符合条件,必须运行,if 后面跟谁都可以,if shuai,if mei
url = self.data.get_url(i)
method = self.data.get_request_method(i)
request_data = self.data.get_data_for_json(i)
expect = self.data.get_expect_data(i)
header = self.data.is_header(i) #上边这几个就不说了,前几篇讲过
depend_case = self.data.is_depend(i) #判断是否依赖,如果依赖把依赖的接口id返回
if depend_case != None: #如果依赖不为空,也就是有需要依赖的变量值
self.depend_data = Dependent_data(depend_case) #实例化,把依赖的接口id传进去
depend_response_data = self.depend_data.get_data_for_key(i) #获取依赖的key,运行接口返回出来的
depend_key = self.data.get_depend_field(i) #通过行,将具体依赖的字段拿到
request_data[depend_key] = depend_response_data #将request_data值更新成依赖接口来到的值
res = self.run_method.run_main(method, url, request_data,header) #执行接口获取结果
if header == "yes": #如果excel表中header是yes
get_token = Get_token() #实例化
yue = get_token.get_token() #执行该类中的get_token函数拿到token值
headers = {
"token":yue
} #这句是把token封装成json格式
res = self.run_method.run_main(method, url, request_data,header=headers) #同上
else: #这个else就是没有header,没有依赖数据后执行的
#method,url,data=None,header=None
res = self.run_method.run_main(method,url,request_data)
if self.com_util.is_contain(expect,res) : #这句是通过判断预期值的字符串是否在返回结果内,如果是则
self.data.write_result(i,'Pass') #将Pass写入excel对应行的实际结果单元格内
pass_count.append(i) #将通过的行号加入pass_count列表内,方便输出测试报告
else:
self.data.write_result(i,res) #将没通过测试的结果写入表格内
fail_count.append(i) #将没有通过的行号加入pass_count列表内
#发送邮件
self.send_mail.send_main(pass_count,fail_count) #调用发送邮件类,将通过或未通过列表传过去
print("~~~~~~~~~~~~~~~~~~~~~~~")
print("执行成功")
print("~~~~~~~~~~~~~~~~~~~~~~~")
if __name__ == '__main__':
run = Runtest()
run.go_on_run()