api接口自动化测试(每天掌握一个软测高级技巧:接口自动化神器apin进阶操作)

之前写了一篇关于接口自动化框架 apin 入门使用是文章,主要介绍了 apin 的安装以及用例编写的方法。

今天这篇文章来给大家聊聊,apin 中的一些高级使用技巧。比如依赖接口的变量提取和引用,用例断言,以及函数工具的使用。

01 变量提取和引用

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

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

1 变量提取

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

语法:

“extract”: { “变量名”: (“变量保存的级别”, “提取方式”, “提取表达式”)移动大流量卡, }变量名

保存数据的变量名

变量保存的级别

EVN: 全局变量,settings 文件中的 EVN

env : 为局部变量(只对当前用例集有效):用例集的 env 字段 提取方式

re: 正则表达式提取

jsonpath: 通过 jsonpath 提取

案例:

“extract”

: {

# 通过jsonpath提取“token”: (“env”, “jsonpath”, “$..token”

),

# 通过正则表达式提取member_id: (“env”, “re”, r”id”:(.+?),

)

}

2 变量引用

变量引用表达式:

$}

引用优先级:

优先引用该用例的局部变量(用例的 env 中的变量),如果局部变量不移动大流量卡存在,则会引用全局变量(setting.py 中 ENV 中保存的变量)。

02 用例断言

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

1 基本语法

verification = [

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

]

2 断言方式

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

断言相等 :eq

预期结果和实际结果相等

verification = [

[eq, 预期结果, 实际结果]

]

断言包含:contains

实际结果中包含预期结果的内容

verification移动大流量卡 = [

[contains, 预期结果, 实际结果]

]

3 实际结果获取

关于断言的实际结果提取,需要使用V{{表达式}} 来进行提取,表达式支持 jsonpath 正则表达式两种提取方式方式。

正则表达式提取

# 通过正则表达式来提取实际结果中的msg字段。

verification = [

[ eq, {msg:“OK”}, {“msg”: “V{{msg:(.+?)}}”

}]

]

通过 jsonpath 提取

# 通过jsonpath来提取实际结果中的msg字段。

verification = [

[ eq, {msg:“OK”}, {“msg”: V{{$..msg}}

]

]

4 HTTP 状态码的断言

上述两种方式,已可提移动大流量卡取结果返回的数据,那如果要断言接口http请求的状态码呢?

apin中也提供了一个内置的字段名,来表示http状态码。

# 断言接口请求的http状态码是否等于200verification

= [

[ eq, 200, status_code

]

]

03 函数工具的使用

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

1 自定义函数

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

案例:funcTools.py 文件

import

hashlib,random

defmd5_encrypt

(msg):移动大流量卡

“””md5加密”””

md5 = hashlib.md5()

md5.update(msg.encode(
“utf8”

))

return

md5.hexdigest()

defrand_phone

():

“””随机生成手机号的函数”””import

random

for i in range(8

):

phone += str(random.randint(
0, 9

))

return

str(phone)

defget_timestamp

():

“””获取时间戳”””return time.time()注意点:函数处理完的数据需要 return 返回哦

2 用例中引用函数

引用表达式:Fdemo1:用例数据中的 user,引用前面定移动大流量卡义的 rand_phone 函数{ title: “普通用户注册”, interface: “member/register”, “method”: “post”, json: {“user”: “F{rand_phone()}”, “pwd”: “lemon123”}, }demo2:用例数据中的 pwd,引用前面定义的 md5_encrypt 函数对密码进行 md 加密

注意点:引用的函数,传递的参数如果是变量,则不需要在变量应用表达式外加引号

{

title: “普通用户登录”

,

interface: “member/login”

,

“method”: “post”

,

json: {“user”: “131098778移动大流量卡90″, “pwd”: “F{md5_encrypt(lemon123)}”

},

}

# 引用函数,变量作为参数传递

{

title: “普通用户登录”

,

interface: “member/login”

,

“method”: “post”

,

json: {“user”: ${{user}}”, “pwd”: “F{md5_encrypt(${{pwd}

})}”},

}

04 项目全局配置

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

1 debug 模式运行

项目创建之后,默认运行是开启了 debug 模式,运行过程中会输出详细的 debug 级别日志。

如果不像看运行日志,则将 s移动大流量卡ettings 中的 DEBUG 设置为 Flase 即可。

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

2 ENV 全局的变量

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

全局的域名

推荐在 ENV 中设置全局的 host,不建议在每一个测试用例中去设置 host,切换测试环境切换也更方便(如果用例数据中没有自己定义 host,会自动引用全局的 host 地址)。

ENV = {

“host”:“http://WWW.XXX.com/”

,

}

全局的请求头

如果项目接口有必传的请求头数据,也可以直接在 ENV 中设置(如果用例数移动大流量卡据中没有定义时,也会自动引用全局的 headers)。

ENV = {

“host”:“http://WWW.XXX.com/”

,

“headers”: {“UserAgent”: “apin-test01”

}

}

全局的测试数据

如果用例中需要引用事先准备好的一些测试数据,如测试账号、密码之类的

如:定义一个测试账号、测试密码、用户 id

ENV = { “host”:“http://WWW.XXX.com/”, “headers”: {“UserAgent”: “apin-test01”}, “user”:“musen@qq.com”, “pwd”:“lemon123”, “user_id”:111 }

测试用例中直接使移动大流量卡 ${{}} 即可引用,

# 引用user和pwd

{

title: “登录”

,

interface: “member/register”

,

“method”: “post”

,

json: {“mobile_phone”: ${{user}}”, “pwd”: ${{pwd}

}”},

}

注意点:如果局部环境和全局变量重名,优先引用局部变量。

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”: “”}


友情提醒: 请添加客服微信进行免费领取流量卡!
QQ交流群:226333560 站长微信:qgzmt2

原创文章,作者:sunyaqun,如若转载,请注明出处:https://www.dallk.cn/72842.html

(0)
sunyaqunsunyaqun
上一篇 2024年12月12日
下一篇 2024年12月12日

相关推荐

发表回复

登录后才能评论