python接口自动化测试(第六篇)

qq群:234922431

前期的工作,做的已经差不多ok,咱们开始进行搭建运行项目之旅

在control包下,增加两个类,autotest.py和testcase.py

autotest类,主要做的事情有如下几点:

1.解析用例文件

2.生成测试报告

3.将测试报告发送到邮箱

autotest.py完整版代码如下:

from control.testcase import TestCase
from control.utlis import Excel, datatodict, testsuite_format
from pathlib import Path


class Autotest():
    def __init__(self, parmars):
        self.parmars = parmars
        # logger.info(parmars)
        # 用例表 强转为str类型 兼容jenkins运行
        self.file_testcae = str(Path('testcase') / ('test-case.xlsx'))
        # 读取测试用例
        self.excel_testcase = Excel('r', self.file_testcae)
        # 获得用例的全部内容
        self.data = self.excel_testcase.read()
        # 转换格式为json
        self.data = datatodict(self.data)
        # 转换数据格式为测试套件返回的可执行用例json
        self.testsuit = testsuite_format(self.data)
        # 用于接受用例的结果
        self.result_testuite = []
        # 测试报告详细数据
        self.report_data = {}

    def play(self):
        # 读取测试套件执行用例
        print(self.testsuit)
        for case in self.testsuit:
            # logger.info(testcase)
            print(case)
            # 传入当前用例
            testcae = TestCase(case)
            # 执行
            rt_case = testcae.run()
            # 收到测试的结果,进行生成测试报告
            self.result_testuite.append(rt_case)

testcase类,主要做的事情有如下几点:

1.解析element文件

2.执行用例,记录测试过程

3.测试数据转换,转换成咱们想要的内容,在前面已经封装过了,在这儿将会直接使用

testcase.py完整版代码如下:

1.执行用例
2.分辨是接口自动化还是ui数据等
3.记录测试结果和输出测试报告
"""
from pathlib import Path
from control.utlis import Excel, element_tojson
from control.data import replace
from control import httpcaps


class TestCase:
    def __init__(self, testcase):
        # 当前执行的用例
        self.testcase = testcase
        print(self.testcase)
        # 元素和链接的表格
        self.file_element = str(Path('element') / ('elements.xlsx'))
        # 读取链接和元素表格全部内容
        self.excel_element = Excel('r', self.file_element)
        # 获得数据
        self.element_data = self.excel_element.read()
        # 元素和接口转换为json,切片是为了去除表格的第一行
        self.elements = element_tojson(self.element_data[1:])
        # 配置参数可能包含ui的基本信息 是什么浏览器和App的版本信息等
        # self.parmars = parmars
        # 类型,是接口测试还是ui自动化
        # self.genre = self.parmars['genre']
        # 处理当前testcase

    #  执行测试用例
    def run(self):
        steps = []
        for index, step in enumerate(self.testcase['steps']):

            # logger.info(index)
            print(step)
            try:
                #  获得当前需要测试的接口内容
                url = self.elements['baseurl']['url'] + self.elements[step['element']]['url']
                # 当前接口请求的类型
                sort = self.elements[step['element']]['type']
                # logger.info(sort)
                # 放入到step里面
                step['element'] = url.strip()
                # 将测试数据进行重组,调用自定义函数 计算出结果
                step['data'] = replace(step['data'])
                # 执行用例
                result_json = getattr(httpcaps, 'htpp_requests')(step, sort)
                # logger.info(result_json)
                # 得到用例执行的结果存入list中
                steps.append(result_json)
            except Exception as exception:
                # 将此用例等于不通过
                step['score'] = 'Fail'
                steps.append(step)
                print('error:interface and element not found%s' % step['element'])
                print('error:%s' % exception)
        # 记录生成的测试结果,生成测试报告excel版本
        self.testcase['steps'] = steps
        return self.testcase

完事具备,只欠东风~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

接下里,创建一个开启测试的类文件,开启测试之旅~~~~~~~~~~~~~~~~~~~

跟目录下增加httpstart.py
python接口自动化测试(第六篇)
httpstart.py内容如下:

from control.autotest import Autotest
import sys

# 将工程根目录加入到python搜索路径中
sys.path.append('..')
# 兼容后期格式,是接口自动化还是web自动化app自动化,数据库,小程序 h5等自动化测试,以接口为主
desired_caps = {'genre': 'api'}

autotest = Autotest(desired_caps)
# 执行测试
autotest.play()
# 创建测试报告
# autotest.crateport()

# 发送测试报告到邮箱
# autotest.sedEmail()

下一篇请查看:python+requests+jenkins接口自动化实战第七篇

https://download.csdn.net/download/zhangmeng1314/11255512源码下载地址

到这里基本的搭建已经完成了,下面将增加功能如下:

1.测试报告文件生成

2.发送测试报告到邮件

3.部署到jenkins上,部署到阿里云服务器上,进行持续集成测试

小伙伴运行一下看看结果哦,因为接口我是本地写的,所以大家自己更换成,可以使用的接口信息即可,

有问题欢迎评论区留言,看到后会一一解答。


作者:猫的❤️
版权声明:本文为博主原创文章,转载请附上博文链接!

上一篇:javascript – 如何与JS / nightwatchjs并行运行多个测试?


下一篇:java – 在junit中测试类的常见@before和@after