zoukankan      html  css  js  c++  java
  • 接口自动化数据文件与脚本分离

    注意:只能在方法里边写东西

    1、封装地址

    用pytest和request写完脚本之后,就可以着手考虑优化的问题了,首先就是地址的问题,每个地址都有一个共有的ip地址,就很麻烦

    1.1、通过变量相加的方式

    可以从以下两个方面来解决url的问题,可以新建一个py文件,把变量放进去,就像token值一样,然后把HOST和url相加就可以得到地址

    HOST = "http://118.24.105.78:2333"

    使用时先导入变量:from utils.common import HOST

                                     u = HOST+"url地址"

    但是使用这种添加变量的方式在每次使用的时候都要去加一下,就很麻烦,使用第二种方式就显得容易得多

    1.2、通过封装方法

    第二种方法,更为普遍,可以封装一个方法

    common.py里封装的方法为:

    HOST = "http://118.24.105.78:2333"
    
    def get_url(url):
        """
            获取完整的接口地址
        """
        return HOST + url

    使用:在使用时倒入即可:

    注意这是两个文件夹下边的文件的倒入,要使用万精油环境变量的方式倒入:

           

    在写case的时候,u = get_url("接口文档上的地址")

    2、数据文件与脚本分离

    接下来就是数据文件的问题了,之前接口上所有的数据都写到了代码里,但是这样的话就导致了代码的耦合性太高,如果数据文件和脚本分离后,接口信息变动,就不用去修改对应的代码,只需要修改数据文件即可

    一般存放数据文件都是存在excel表格中,或者是存放在MySQL数据表中,这里使用excel存放

    2.1、建立excel文档

    首先新建一个excel文档,这个文档里要放入于接口相关的信息:编号、名称、接口地址、参数、请求头、HTTP状态码、结果码

    2.2、建立分层data,导入数据文件

    先建立一个data文件夹,将刚才写的excel放入data文件夹中

                      

    2.3、读取excel中的数据

    2.3.1、安装xlrd

    读取excel,会用到python的一个第三方包:xlrd,这是python专门用来读取excel 的一个包

    要想使用这个包,首先就是要安装它,管理员方式打开cmd,输入命令:pip install xlrd(这个一般来说都是要加-i参数的,但是这个可能比较小吧,没加也很快下载好了)

    2.3.2、封装方法读取excel

    接下里就是去封装一个方法来读取excel

    ①  先再utils里新建一个exceltools.py文件

    ②  导入xlrd,封装方法

    """
        读取excel
    """
    import xlrd
    
    def read_excel(excel_path, sheet_name, skip_first=True):
        """
            方法:python读取excel
            参数:
                - excel_path:excel的路径
                - sheet_name:表格名字
                - skip_first: 是否跳过首行,True:跳过;False:不跳过,默认值是跳过
            返回值:[[1, "xxx接口成功", "/login"...], []]
        """
        results = [] 
        datas = xlrd.open_workbook(excel_path)    #就相当于在打开excel
        table = datas.sheet_by_name(sheet_name)    #读取excel中的每一个sheet
        if skip_first == True:
            start_row = 1
        else:
            start_row = 0
    
        # 循环读取每一行数据
        for row in range(start_row, table.nrows):
            results.append(table.row_values(row))
    
        return results
    
    #测试
    if __name__ == "__main__":
        a = read_excel("./data/测谈网接口.xlsx", "问题详情页面")
        print(a)

    只用在封装方法这里import xlrd就行了,别的地方可以不用导入xlrd

    2.3.3、使用封装好的读取excel的方法

    ①  使用前先导入刚才封装好的方法

    这里由于是不同文件夹下的不同文件的导入,还是得使用万精油方式:

            

    ②在py文件方法外边先读取出全部数据

    使用时还需要在方法外边将excel读取出来(共用嘛,所以需要在方法外边)

    他读取出来之后的返回值是放在一个大的列表中(每一个sheet放在一个大的列表里),然后大的列表里有无数个小的列表,excel中有几行数据就有几个小的列表,这里就通过下标来取值来读出了

    ③  按下标一一取值读取

    边分离可以边执行,看是否会报错

    由于header和请求数据python代码需要的是字典类型,但是读取excel中读取出来的是字符串类型,这里就涉及到了数据类型的转换,用eval()进行强转

    涉及到token值的地方,python代码中用了read_file()来读取token值,在写excel数据文件的时候,直接将这个方法原封不动的搬过去就行,到时候再用eval()方法强转,会自动把token值获取到,这一点是eval()方法的强大之处之一

    3、接口自动化测试用例的编写

    就是把普通的接口测试用例转换成了python代码而已

    写接口自动化测试用例的时候要注意以下几点:

    • 场景一般都只考虑正向场景,因为一般来讲,都是先接口测试,然后再功能测试,然后功能稳定之后才是自动化测试,所以,在这之前异常的场景就已经在解耦测试中测试到了的
    • 如果时间充足的情况下,可以考虑将异常场景也加入(比如参数异常,参数传入的数据异常等等)
    • 添加一个用例,会涉及到数据文件的添加以及测试方法中脚本文件的添加等等

    3、测试报告

    allure:第三方专门的网页测试报告

    1、使用allure需要有Java环境

    2、安装allure-commandline工具,并配置环境变量(将安装路径下的bin目录添加到path中)

    3、验证环境变量:新打开一个cmd,输入allure,如果没有出错,就没问题,如下图所示

    4、安装allure-pytest第三方包,以管理员身份打开cmd:pip3 install allure-pytest -i https://pypi.tuna.tsinghua.edu.cn/simple

    5、以管理员身份重启VScode

    6、运行(这里就不是只输入pytest了):输入命令pytest --alluredir=result,这时会在目录里边自动生成一个report文件夹,文件夹下边就保存着每一个case 的结果

    7、把result结果文件编译成测试报告,运行命令:allure generate result -o report --clean

    8、打开result里边的测试报告,输入命令:allure open -h 127.0.0.1 -p 10086 report

    不出意外的话会自动弹出一个网站(默认是英文的,左下角可以改成中文的),如果没有弹出,就自己手动复制网址去打开就行

    如果想退出,就在VScode里边Ctrl+S就行,但是退出后测试报告就失效了,所以一定要最后再去做这一步

    注:除了第三步,第四步在cmd里,别的命令都是在VScode里边执行的

  • 相关阅读:
    vue的动画组件(transition)
    vue组件的那些事($children,$refs,$parent)的使用
    vue怎么自定义指令??
    组件之间的通信:父子组件之间的通讯(子组件-改变父组件的值)
    vue的路由初识01
    总结css的使用技巧
    crontab 定时任务
    Linux crontab 命令详解
    python-面向对象
    /var/spool/postfix/maildrop 占用inode索引及磁盘空间解决办法
  • 原文地址:https://www.cnblogs.com/bzbz/p/14010928.html
Copyright © 2011-2022 走看看