描述:该项目是一个聊天功能,用户需要登录后进行聊天,满足基本的功能。页面和接口存在BUG,提供接口自动化实践。
资源:实践项目
实践:登录在创建房间
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
config文件中的代码
前言
记录的是config文件中的 config_login文件中的代码。我会把文件common中代码复制一遍,因为在优化代码,所以会有一定的改动。
接口登录到创建房间的用例。
提示:这里可以添加本文要记录的大概内容:
confing文件中存放的是登录方法和xlsx测试用例。
这个场景的思路是。先登录-获取cookies-创建房间-成功
提示:以下是本篇文章正文内容,下面案例可供参考
一、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版本的兼容问题
该项目目前只支持接口和功能测试。如果转发,使用,请留言。因为我们会进行定期用户删除。