接口自动化示例二

发布于:2022-11-13 ⋅ 阅读:(738) ⋅ 点赞:(0)

描述:该项目是一个聊天功能,用户需要登录后进行聊天,满足基本的功能。页面和接口存在BUG,提供接口自动化实践。
资源:实践项目
实践:登录在创建房间


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

记录的是config文件中的 config_login文件中的代码。我会把文件common中代码复制一遍,因为在优化代码,所以会有一定的改动。
接口登录到创建房间的用例。

提示:这里可以添加本文要记录的大概内容:
confing文件中存放的是登录方法和xlsx测试用例。
这个场景的思路是。先登录-获取cookies-创建房间-成功
提示:以下是本篇文章正文内容,下面案例可供参考

一、config文件中的代码

我在config新建的模块
我在config装的内容
文档中展示的内容根据个人需求所记录
在这里插入图片描述
因为登录只会登录一次,所以就没有写在表中,单独的用一个模块编写。方便调用。

import json
def login_ini():
    """
    登录密码和账号
    :return:
    """
    login_data = {
        "password": '123456',
        "userName": "zs",
        "userType": "2"
    }
    login_data_json = json.dumps(login_data)
    login_url = 'http://cometoyou.cn:9200/login/toLogin'
    login_headers = {"Content-Type": "application/json"}
    return [login_url, login_data_json,login_headers,login_data]

二、在上一遍文章中的common的代码改动

在这里插入图片描述
代码如下(如果要看详细情况就在 接口自动化示例一 中查看)

from common import request_method
import xlwings as xw
import os
def get_xls(books, sheet1, line, column):
    """
    读取xls表中全部数据
    :param books:
    :param sheet1:
    :param line: 最开始一行
    :param column: 最开始一列
    :return: 二维列表
    """
    current_work_dir =request_method.xuxu()
    open_app = xw.App(visible=False, add_book=False)
    open_book = open_app.books.open(current_work_dir + books)
    print('打印地址',open_book)
    open_sheet = open_book.sheets(sheet1)
    cell = open_sheet.used_range.last_cell
    line_1 = cell.row
    column_2 = cell.column
    read_xls = open_sheet.range((line, column), (line_1, column_2)).options(numbers=int).value
    open_book.save()
    open_book.close()
    open_app.quit()
    # open_app.kill()
    return read_xls
def shear_xls(books, sheet1, line, column, scope_line: 5, scope_column: 13):
    """
    读取规定的几行数据
    :param books:
    :param sheet1:
    :param line:1
    :param column:1
    :param scope_line: 下标第几个
    :param scope_column: 下标第几个,join组合【scope_line:scope_column】获取区间的数据
    :return: 二位列表
    """
    head_xls = get_xls(books, sheet1, line, column)
    head_xks = head_xls[1:]
    list_1 = []
    for i in head_xks:
        interception = i[scope_line:scope_column]
        if interception:
            list_1.append(interception)
    print("读取指定xls数据**", list_1)
    return list_1
"""get_shear = shear_xls(books="case_room.xlsx", sheet1="sheet1", line=1,
                      column=1, scope_line=9, scope_column=13)
print(get_shear)
"""
def write_xls(book, sheet: str, row, read_data:list):
    """
    在表中写入数据
    :param book:
    :param sheet:
    :param row:
    :param read_data:
    :return: 无
    """
    current_work_dir = request_method.xuxu()
    open_app = xw.App(visible=False, add_book=False)
    open_books = open_app.books.open(current_work_dir + book)
    open_sheet = open_books.sheets(sheet)
    #try:
    open_sheet.range(row).options(transpose=True).value = read_data
    open_books.save()
    open_books.close()
    open_app.quit()
#write_xls(book='\config\case_room.xlsx', sheet='sheet1', row='Q11', read_data=(1, 2, 3))

在这里插入图片描述
代码如下

import json
import os.path
import requests
import yaml
import sys
def xuxu():
    # 自动获取当前配置文件
    current_work_dir = os.path.abspath(os.path.dirname(os.path.abspath(__file__)) + '/..')
    return current_work_dir
def request_post(url, data, **args):
    """
    post方法
    :param url:
    :param data:
    :**args 可传参headers:
    :return: list
    """
    # header = json.dumps(headers)#因为 表中 的数据是json 就不需要 dumps转换成为json
    request_post = requests.post(url=url, data=data.encode('utf-8'), headers=args['headers'])
    return request_post
def cookie_get(url, data, **args):
    """
    获取cookies的方法
    :param url:
    :param data:
     :**args 可传参headers:
    :return:
    """
    request_pos = request_post(url, data, headers=args['headers'])
    request_po = request_pos.cookies
    return request_po
def yml_cookies(model: str, cooki):
    """
    写入yaml数据的方法
    :param yam: yaml的文件名,比如XXXX.yaml
    :param model: 以什么方式写入数据,比如 w a+
    :return: dict
    """
    address = xuxu()
    u0 = address + r'\common\confing_yaml.yaml'
    with open(u0, mode=model, encoding='utf-8') as f:
        yaml.dump(cooki.get_dict(), f, encoding='utf-8')
def yaml_get(model):
    """
    读取yaml
    :return: 全量
    """
    address = xuxu()
    ui = address + r'\common\confing_yaml.yaml'
    print(ui)
    with open(ui, mode=model, encoding='utf-8') as f:
        get_yaml = yaml.load(f, yaml.Loader)
        print("读取yaml文件***", get_yaml)
        return get_yaml
yaml_get(model='r')

总结

注意 json.dumps 的理解点

在这里插入图片描述

关于 *和**的区别

*是支持传元组。不可变类型。**是支持传字典。字典要用字典的方法使用。元组,要有元组的方法使用。不然会报错。

AttributeError: module ‘collections’ has no attribute ‘Hashable’ 的问题。

我是因为两个pyyaml版本的兼容问题

该项目目前只支持接口和功能测试。如果转发,使用,请留言。因为我们会进行定期用户删除。