本帖最后由 つ兜兜里没糖 于 2021-3-22 19:55 编辑
1.自动化测试框架
线性脚本框架,数据驱动自动化框架,关键字驱动自动化框架,模块驱动自动化框架,混合自动化框架
数据驱动自动化框架
将测试数据与测试脚本分离,基于模块化的测试库,一个驱动脚本可以执行多个相似测试。数据驱动测试框架使用外部数据(excel,xml
数据库等)作为输入控制和验证自动化测试的操作
数据分层设计:
环境数据:ini
用例数据:yaml
接口地址(常量):代码
代码分层设计:- 在一个自动化工程中,可能包含哪些东西。
- 与项目无关的操作(CAW Common Action Word util):读写文件的操作(读取环境数据、读取用例数据);数据库操作(预置数据、检查结果)、日志打印
- 与项目有关的操作(BAW Business Action Word):
- 金融项目:用户模块、项目模块(按模块组织,每个模块的接口放到一个文件中。)
- 可扩展性
- 可维护性高
- 易用性好
- 实现过程
- 将环境信息写到文件中,env.ini ,封装一个方法读环境信息
- 将用例的数据写到文件中,读取用例数据,yaml来描述
- 注册的用例共有几个测试逻辑(测试步骤)?
- 原则
- 初始化环境:该用例需要的环境,在脚本中构造对应的环境
- 清理环境:脚本执行前是什么样子,脚本执行后仍恢复成什么样子。
- 脚本之间不能有依赖。A脚本注册,B脚本登录,不允许
'''
脚本层的一些公共方法
整个执行过程只执行一次'''
import pytest
from zonghe.caw import FileRead
from zonghe.caw.BaseRequests import BaseRequests
# 测试前置,session级别的,整个过程执行一次
# 读取url
@pytest.fixture(scope='session')
def url():
return FileRead.read_ini(r"dataenv/env.ini", "url")
# 读取db
@pytest.fixture(scope='session')
def db():
# 配置文件中读取出来的是字符串,但是需要一个字典
# 字符串转字典 eval
return eval(FileRead.read_ini(r"dataenv/env.ini", "db"))
# 创建BaseRequests的实例
@pytest.fixture(scope='session')
def baserequests():
return BaseRequests()'''
读文件相关的操作'''
import configparser
import os
import yaml
def get_project_path():
'''
获取工程路径
:return:
'''
# print(__file__)
file_path = os.path.realpath(__file__) # 当前文件的路径
dir_path = os.path.dirname(file_path) # 获取文件所在目录的路径
dir_path = os.path.dirname(dir_path) # 获取上一级路径
return dir_path +"\\"
def read_ini(file_path, key):
'''
读文件配置,根据key取value
:param file_path: 文件路径
:param key: key
:return: key对应的value
'''
# configparser是Python中专门读配置文件的模块
config = configparser.ConfigParser()
# config.read(file_path)
config.read(get_project_path() + file_path)
# env 对应ini 文件的 [env], 也就是section
value = config.get("env", key)
return value
def read_yaml(file_path):
'''
读取yaml文件
:param file_path: yaml 文件路径
:return:
'''
file_path = get_project_path() + file_path
with open(file_path, "r", encoding='utf-8') as f :
content = f.read() # 读取文件
# 转成yaml格式的
return yaml.load(content, Loader=yaml.FullLoader)
# 测试代码,用完可以删除
if __name__ == '__main__':
# 绝对路径使用时不方便,如果不存在D盘,或许不存在这个路径,脚本无法执行
# D:\java\ApiAutoTest\zonghe\ 这一段的路径通过脚本自动获取
url = read_ini(r"dataenv\env.ini", "url")
print(url)
db = read_ini(r"dataenv\env.ini", "db")
print(db)
print(read_yaml(r"datacase\register_fail.yaml"))
|