用 yaml 写测试用例

Posted Joseph Peng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用 yaml 写测试用例相关的知识,希望对你有一定的参考价值。

采用 excel 的方式写测试用例,格式比较死板,比较容易出错,采用 yaml / yml 格式来写用例。

首先安装 pyyaml:pip install pyyaml

建立一个 login.yaml 文件(或login.yml,这两种后缀是一样的),内容如下,可见内容中的key会变颜色,如果没有变颜色,冒号后面加个空格。

username: joseph
passwd: 123456
cpasswd: 123456
name: joseph

建立 a.py 文件读取 login.yaml

1 import yaml
2 f = open(login.yaml,encoding=utf-8)
3 res = yaml.load(f)
4 print(res)

运行结果如下:可见,从 yaml 文件中读出来的是一维字典。

{username: joseph, name: joseph, passwd: 123456, cpasswd: 123456}

 

修改 login.yaml 文件,再次执行 a.py 查看运行结果。

url: /api/user/login
method: post
data:
  username: joseph  #顶头使用一个tab,否则会报错
  passwd: aA123456  #冒号后面加一个空格
headers:
  user-agent: Firefox
cookies:
  sign: ssassssss
check:
  error_code: 0

运行结果:可见,增加一个tab 后,就变成了二维字典。

{check: {error_code: 0}, data: {username: joseph, passwd: aA123456}, cookies: {sign: ssassssss}, url: /api/user/login, headers: {user-agent: Firefox}, method: post}

但是,这种方法有一个弊端,在 yaml 中录入多个用例时,后面的用例会把前面的用例覆盖,如下文中的两个用例。(在 yaml 中注视同 python一样,前面加 #)

技术分享图片
#正常登录
url: /api/user/login
method: post
data:
  username: joseph
  passwd: aA123456
headers:
  user-agent: Firefox
cookies:
  sign: ssassssss
check:
  error_code: 0
#密码错误
url: /api/user/login
method: post
data:
  username: joseph
  passwd: aaaaaaa
headers:
  user-agent: Firefox
cookies:
  sign: ssassssss
check:
  error_code: 3007
View Code

执行 a.py 后,运行结果如下:

{check: {error_code: 3007}, url: /api/user/login, method: post, data: {username: joseph, passwd: aaaaaaa}, headers: {user-agent: Firefox}, cookies: {sign: ssassssss}}

那我们采用什么方式来写多条测试用例呢,可以采用在每一个用例之前加上 ‘-’ ,下方用例顶头都加上 tab ,如下所示:

技术分享图片
-
  url: /api/user/login
  method: post
  datail: 正常登录
  data:
    username: joseph
    passwd: aA123456
  check:
    userId: 1
    error_code: 0

-
  url: /api/user/login
  method: post
  datail: 密码错误
  data:
    username: joseph
    passwd: aA123123
  check:
    error_code: 3007

-
  url: /api/user/login
  method: post
  datail: 密码不传
  data:
    username: joseph
  check:
    error_code: 3001
View Code

运行 a.py ,运行结果如下,可见,运行结果变成了一个列表。可以对列表进行循环,读出每一个用例。

[{method: post, check: {userId: 1, error_code: 0}, datail: 正常登录, url: /api/user/login, data: {passwd: aA123456, username: joseph}}, {method: post, check: {error_code: 3007}, datail: 密码错误, url: /api/user/login, data: {passwd: aA123123, username: joseph}}, {method: post, check: {error_code: 3001}, datail: 密码不传, url: /api/user/login, data: {username: joseph}}]

 

以上是关于用 yaml 写测试用例的主要内容,如果未能解决你的问题,请参考以下文章

根据yaml测试用例自动生成py文件

httprunner 2.x学习4-测试用例分层

python+appium+yaml安卓UI自动化测试分享

39-pytest-使用yaml文件编写测试用例

HttpRunner2.X开源接口测试框架学习:yaml格式测试用例编写

utp