采用 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

执行 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

运行 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 写测试用例的更多相关文章

  1. 实践作业3:白盒测试----我是如何写测试用例DAY6

    一开始接到写白盒测试的任务,我感觉挺难的,因为感觉之前我所想到的都是黑盒测试啊,说到测试系统逻辑,感觉就有些神秘的样子没有思路了,那黑盒和白盒写的到底有啥区别.后来我请教了实验室的一个同学,他虽然还没 ...

  2. django为url写测试用例

    这个和为orm写测试用例类似. 但为了区分文件,还是建议在app目录下,用tests_orm.py,tests_url.py这类单独文件加以区分. urls.py如果如这样. from django. ...

  3. Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建;学习Python语言,利用Python语言来写测试用例。加油!!!

    Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建:学习Python语言,利用Python语言来写测试用例.加油!!!

  4. 尝试 Markdown 写测试用例

    我的原帖https://testerhome.com/topics/9412 大家都知道我们社区的帖子提倡用Markdown格式编写,正好项目进入稳定期,尝试用Markdown写下测试用例.有几个目的 ...

  5. 大牛都是这样写测试用例的,你get到了嘛?

    1. 用于语句覆盖的基路径法 基路径法保证设计出的测试用例,使程序的每一个可执行语句至少执行一次,即实现语句覆盖.基路径法是理论与应用脱节的典型,基本上没有应用价值,读者稍作了解即可,不必理解和掌握. ...

  6. selenium python bindings 写测试用例

    这章总结selenium在UI测试方面的用法 import unittest from selenium import webdriver from selenium.webdriver.common ...

  7. 软件测试大牛都是这样写测试用例的,你get到了嘛?

    1. 用于语句覆盖的基路径法 基路径法保证设计出的测试用例,使程序的每一个可执行语句至少执行一次,即实现语句覆盖.基路径法是理论与应用脱节的典型,基本上没有应用价值,读者稍作了解即可,不必理解和掌握. ...

  8. 跟我一起学Go系列:从写测试用例开始仗剑走天涯

    从入门到深入 Go 我们已经走了很长的路,当你想启动多个测试类的时候你是不是想启动多个 main 方法,但是 Go 限制了在同一个 package 下只能有一个 main,所以这条路你是走不通的.那我 ...

  9. SpringBoot(十二):springboot2.0.2写测试用例

    导入maven依赖: <dependency> <groupId>junit</groupId> <artifactId>junit</artif ...

  10. postman写测试用例

    接口测试引用聚合数据(手机号码归属地)接口 1,点击postman左上角红框+New Collection来创建文件,用来存放测试用例 文件名为号码归属地查询(随意)  2,右击文件选择Add Req ...

随机推荐

  1. 笔记:C#Datatable 根据某字段数量 自动复制该行的数量

    /// <summary> /// 根据Datatable某字段数量自动复制该行查询 /// </summary> /// <param name="dt&qu ...

  2. Networking && Internet 计网学习笔记一

    Networking && Internet 计网学习笔记一 参考书籍: James F. Kurose, Keith W. Ross. 计算机网络-自顶向下方法 (7th). 机械工 ...

  3. SpringBoot整合Mybatis、SpringBoot整合Spring Data JPA

    Springboot Mybatis <?xml version="1.0" encoding="UTF-8"?> <project xmln ...

  4. HGAME_2023_WEB_WP_WEEK3

    Ping to the host 很明显的rce,简单测试一下发现空格,cat,:被办,且执行无回显,空格用${IFS},%09,$IFS$9等等来绕过,我们利用dnslog将执行结果外带出来,这里使 ...

  5. sqlmap 简单使用

    sqlmap 简单使用 环境:phpstudy:MySQL5.4.7 介绍 sqlmap是一个开源的渗透测试工具,它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程.它有一个强大的检测引擎 ...

  6. Python常见面试题006 类方法、类实例方法、静态方法有何区别?

    006. Python中类方法.类实例方法.静态方法有何区别? 全部放一个里面篇幅过大了,就拆分成1个个发布 示例代码 class Human: def __init__(self, name): s ...

  7. Win下依据端口排查步骤

    Win下依据端口排查步骤 目录 Win下依据端口排查步骤 1 排查步骤 2 参考 今天突然发现自己电脑出现7680端口的内网连接,决定看看这个端口是做什么用的 1 排查步骤 确认7680端口连接情况与 ...

  8. Canvas:绘制多边形

    前言 CanvasRenderingContext2D 没有提供绘制多边形的函数,所以只能由我们自己来实现绘制多边形的函数.以六边形为基础,需要用到三角函数:sin 和 cos. 点 A 坐标 (一) ...

  9. 基于docker的spark分布式与单线程、多线程wordcount的对比实验

    1. 分布式环境搭建 1.1 基于docker的spark配置文件 docker-compose.yml version: '2' services: spark: image: docker.io/ ...

  10. .gitattributes 作用详细讲解

    https://blog.csdn.net/qq_35425070/article/details/106883833 *.fbx filter=lfs diff=lfs merge=lfs -tex ...