我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

接口测试_武浩杰_2021/3/22

[复制链接]
海底月是天上月学员认证 发表于 2021-3-22 19:34:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
数据驱动自动化框架
  将测试数据与测试脚本分离,基于模块化的测试库,一个驱动脚本可以执行多个相似测试。
数据驱动测试框架使用外部数据(例如excel、xml、yaml、数据库等)作为输入来控制和验证自动化测试的操作

在一个自动化工程中,可能包含哪些东西。
与项目无关的操作(CAW  Common Action Word    util):读写文件的操作(读取环境数据、读取用例数据);数据库操作(预置数据、检查结果)、日志打印
与项目有关的操作(BAW  Business Action Word):
金融项目:用户模块、项目模块(按模块组织,每个模块的接口放到一个文件中。)
租车系统:客户管理、车辆管理、租车单管理……
可扩展性
可维护性高
易用性好
实现过程
创建目录结构
将环境信息写到文件中,env.ini ,封装一个方法读环境信息
url
数据库   ip、端口号、数据库名字、用户名、密码
将用例的数据写到文件中,读取用例数据,yaml来描述
注册的用例共有几个测试逻辑(测试步骤)?
原则
初始化环境:该用例需要的环境,在脚本中构造对应的环境
清理环境:脚本执行前是什么样子,脚本执行后仍恢复成什么样子。
这个脚本下次还能执行
这个脚本执行完不能影响下个脚本执行
脚本之间不能有依赖。A脚本注册,B脚本登录,不允许
注册成功
下发请求
检查响应的结果
检查系统中是否有这个用户
删除注册用户
注册失败
下发请求
检查响应的结果
重复注册
下发请求
下发请求
检查响应的结果





import pytest

from day02.zonghe.baw import Member
from day02.zonghe.caw import FileRead, Db


# 注册失败的数据
@pytest.fixture(params = FileRead.read_yaml(r"datacase\register_fail.yaml"))  # yaml文件读取过来的
def fail_data(request):
    return  request.param

# 注册失败的测试逻辑/测试步骤
def test_register_fail(fail_data,baserequests,url):
    # 准备测试数据
    print("测试数据为:" ,fail_data['data'])
    print("预期结果为:" , fail_data['expect'])
    # 下发请求
    r = Member.register(baserequests,url,fail_data['data'])
    # 检查结果
    assert r.json()['msg'] == fail_data['expect']['msg']
    assert r.json()['code'] == fail_data['expect']['code']
    assert r.json()['status'] == fail_data['expect']['status']


# 注册成功的数据
@pytest.fixture(params = FileRead.read_yaml(r"datacase\register_pass.yaml"))  # yaml文件读取过来的
def pass_data(request):
    return  request.param
# 注册成功
def test_register_pass(pass_data,baserequests,url,db):
    # 初始化环境(可能环境中有上次遗留的数据,或者其他人添加的数据,与本次执行的数据冲突了)
    Db.delete_user(db, pass_data['data']['mobilephone'])
    # 准备测试数据
    print("测试数据为:", pass_data['data'])
    print("预期结果为:", pass_data['expect'])
    # 下发请求
    r = Member.register(baserequests, url, pass_data['data'])
    # 检查响应结果
    assert r.json()['msg'] == pass_data['expect']['msg']
    assert r.json()['code'] == pass_data['expect']['code']
    assert r.json()['status'] == pass_data['expect']['status']
    ###################################################
    # 检查注册的用户在系统中存在
    # 方法1.使用注册的用户登录    方法2.检查数据库    方法3.查询所有用户,结果在包含已注册用户
    r = Member.list(baserequests,url)  # 使用的是方法三
    assert pass_data['data']['mobilephone'] in r.text
    #  清理环境 :删除用户(这个脚本执行完,不影响其他脚本执行,不影响这个脚本第二次执行)
    # 方法1.调用删除用户的接口删除  方法2.数据库中删除
    Db.delete_user(db,pass_data['data']['mobilephone'])


# 重复注册的数据
@pytest.fixture(params = FileRead.read_yaml(r"datacase\register_repeat.yaml"))  # yaml文件读取过来的
def repeat_data(request):
    return  request.param
# 重复注册
def test_register_repeat(repeat_data,baserequests,url,db):
    Db.delete_user(db, repeat_data['data']['mobilephone'])
    # 准备测试数据
    print("测试数据为:", repeat_data['data'])
    print("预期结果为:", repeat_data['expect'])
    # 下发请求
    r = Member.register(baserequests, url, repeat_data['data'])
    assert r.json()['msg'] == repeat_data['expect0']['msg']
    assert r.json()['code'] == repeat_data['expect0']['code']
    assert r.json()['status'] == repeat_data['expect0']['status']
    r = Member.register(baserequests, url, repeat_data['data'])
    print(r.text)
    # 检查结果
    assert r.json()['msg'] == repeat_data['expect']['msg']
    assert r.json()['code'] == repeat_data['expect']['code']
    assert r.json()['status'] == repeat_data['expect']['status']
    Db.delete_user(db,repeat_data['data']['mobilephone'])

回复

使用道具 举报

关注0

粉丝0

帖子30

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注软件测试菁英教育

客服电话:17792550360

客服时间:9:00-21:00

卓目鸟学苑 - 专注软件测试菁英教育!( 陕ICP备20001493号-1 )

版权所有 © 西安菁英教育科技有限公司 2023-2026