接口自动化神器 apin(二),进阶使用篇

本贴最后更新于 1368 天前,其中的信息可能已经时移世易

前言:

之前写了一篇关于接口自动化框架apin入门使用是文章,主要介绍了apin的安装以及用例编写的方法,今天这篇文章来给大家聊聊,apin中的一些高级使用技巧。比如依赖接口的变量提取和引用,用例断言,以及函数工具的使用。如果没看过上一篇的小伙伴请点击链接 接口自动化神器 apin(一), 快速入门篇

一、变量提取和引用

变量提取和引用主要是为了解决接口之间的参数依赖问题

使用场景:接口A的参数中需要使用接口B返回的某个数据,那么就要在请求B接口之后,提取数据保存,给请求A接口时使用。

1、变量提取

在用例集或用例数据中,通过extract字段指定要提取的变量。

2、变量引用

二、用例断言

关于测试用例预期结果和实际结果的比对的,apin中封装了一个verification字段,只需要在verification中定义预期结果,实际结果提取表达式,和断言的方法,即可实现用例的断言!

1、基本语法

verification = [
        [断言方式, 预期结果, 实际结果]
    ] 

2、断言方式

apin中目前支持两种断言方式:

3、实际结果获取

关于断言的实际结果提取,需要使用

V{{表达式}}来进行提取,表达式支持jsonpath和正则表达式两种提取方式方式。

4、HTTP状态码的断言

上述两种方式,以可提取结果返回的数据,那如果要断言接口http请求的状态码呢?apin中也提供了一个内置的字段名,来表示http状态码
# 断言接口请求的http状态码是否等于200
verification = [
        ['eq', 200, 'status_code']
    ] 

三、函数工具的使用

apin支持在测试用例中调用自定义的函数来处理数据,如对数据进行加密处理、随机生成数据等等。

1、自定义函数

apin创建的项目中有一个funcTools.py,在该文件中可以自己定义函数,然后在用例中通过F{xxx()}来调用。

import hashlib,random

def md5_encrypt(msg):
    """md5加密"""
    md5 = hashlib.md5()  
    md5.update(msg.encode("utf8"))  
    return md5.hexdigest()

def rand_phone():
	"""随机生成手机号的函数"""
    import random
    for i in range(8):
        phone += str(random.randint(0, 9))
    return str(phone)


def get_timestamp():
    """获取时间戳"""
    return time.time()

2、用例中引用函数

{
	'title': "普通用户注册",
	'interface': "member/register",
	"method": "post",
	'json': {"user": "F{rand_phone()}", "pwd": "lemon123"},
}
{
	'title': "普通用户登录",
	'interface': "member/login",
	"method": "post",
	'json': {"user": "13109877890", "pwd": "F{md5_encrypt('lemon123')}"},
}

# 引用函数,变量作为参数传递
{
	'title': "普通用户登录",
	'interface': "member/login",
	"method": "post",
	'json': {"user": "${{user}}", "pwd": "F{md5_encrypt(${{pwd}})}"},
}

四、项目全局配置

项目中的setting.py文件,是整个项目的配置文件,接下来详细介绍一下项目的配置选项。

1、debug模式运行

项目创建之后,默认运行是开启了debug模式,运行过程中会输出详细的debug级别日志。如果不像看运行日志,则将settings中的DEBUG设置为Flase即可。

# 是否开启debug模式:True为debug模式,False为关闭debug模式
DEBUG = False

2、ENV全局的变量

将settings.py中的ENV可以设置项目全局配置,

3、测试报告

通过setting中的TEST_RESULT,可以配置测试报告的输出信息。
TEST_RESULT = {
    # 测试报告文件名
    "filename": "report.html",
    # 测试人员
    "tester": "测试员",
    # 报告标题
    "title": "测试报告",
    # 报告样式 :有1,2,三个样式
    "templates": 1,
    # 报告描述信息
    "desc": "XX项目测试生成的报告"
}

4、邮件推送测试结果

如果要将测试结果发送到指定的邮箱中,则在settings.py添加EMAIL配置即可

EMAIL = {
    # smtp服务器地址
    "host": 'smtp.qq.com',
    # smtp服务器端口
    "port": 465,
    # 邮箱账号
    "user": "xxxx@qq.com",
    # smtps授权码
    "password": "xxxx",
    # 收件人列表
    "to_addrs": ['xxx@qq.com','xxx@qq.com'],
    # 是否发送附件
    "is_file": True
}

5、测试结果推送到钉钉群

如果要将测试结果推送到钉钉群,则在settings.py添加DINGTALK配置即可。

DINGTALK = {
    #  钉钉机器人的Webhook地址
    "url": "",
    # 如果钉钉机器人安全设置了关键字,则需要传入对应的关键字
    "key": None,
    # 如果钉钉机器人安全设置了签名,则需要传入对应的密钥
    "secret": None,
    # 钉钉群中要@人的手机号列表,如:[137xxx,188xxx]
    "atMobiles": [],
    # 是否@所有人
    "isatall": False
}

6、测试结果推送企业微信群

如果要将测试结果推送到企业微信群,则在settings.py添加WECHAT配置即可。

WECHAT = {
    # 企业微信群ID
    "chatid": "",
    # 调用企业微信API接口的凭证
    "access_token": ""
}

回帖
请输入回帖内容 ...