我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

接口测试-樊江飞-2021.03.22

[复制链接]
皮皮虾学员认证 发表于 2021-3-22 19:03:06 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
'''
import pytest
#注册失败的数据
from zonghe.caw import FileRead
@pytest.fixture(params=FileRead.read_yaml(r"datacase\register_fail.yaml"))
def fail_data(request):
    return request.param
#注册失败的测试逻辑、测试步骤
def test_register_fail(fail_data):
    #准备测试数据
    print("测试数据为:",fail_data['data'])
    print("预期结果为:",fail_data['expect'])
    #下发请求'''
import pytest
from zonghe.baw import Member
from zonghe.caw import FileRead, Db
# 注册失败的数据
from zonghe.test_script.conftest import baserequests, url
@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['expect']['msg']
    assert r.json()['code'] == repeat_data['expect']['code']
    assert r.json()['status'] == repeat_data['expect']['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'])
'''
脚本层的一些公共方法
整个执行过程只执行一次
'''
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:
    :return:
    '''
    # configparser是python中读取
    config = configparser.ConfigParser()
    config.read(get_project_path() + file_path)
    value = config.get("env", key)
    return value
def read_yaml(file_path):
    '''
    读取文件
    :param file_path:
    :return:
    '''
    file_path = get_project_path() + file_path
    with open(file_path, "r", encoding='utf-8') as f:
        content = f.read()
        return yaml.load(content, Loader=yaml.FullLoader)
# 测试代码,
if __name__ == '__main__':
    # 绝对路径使用时不方便,如果不在c 盘,或者不存在这个路径,脚本无法执行。
    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"))

回复

使用道具 举报

关注0

粉丝0

帖子25

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

客服电话:17792550360

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

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

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