用 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
执行 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 写测试用例的更多相关文章
- 实践作业3:白盒测试----我是如何写测试用例DAY6
一开始接到写白盒测试的任务,我感觉挺难的,因为感觉之前我所想到的都是黑盒测试啊,说到测试系统逻辑,感觉就有些神秘的样子没有思路了,那黑盒和白盒写的到底有啥区别.后来我请教了实验室的一个同学,他虽然还没 ...
- django为url写测试用例
这个和为orm写测试用例类似. 但为了区分文件,还是建议在app目录下,用tests_orm.py,tests_url.py这类单独文件加以区分. urls.py如果如这样. from django. ...
- Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建;学习Python语言,利用Python语言来写测试用例。加油!!!
Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建:学习Python语言,利用Python语言来写测试用例.加油!!!
- 尝试 Markdown 写测试用例
我的原帖https://testerhome.com/topics/9412 大家都知道我们社区的帖子提倡用Markdown格式编写,正好项目进入稳定期,尝试用Markdown写下测试用例.有几个目的 ...
- 大牛都是这样写测试用例的,你get到了嘛?
1. 用于语句覆盖的基路径法 基路径法保证设计出的测试用例,使程序的每一个可执行语句至少执行一次,即实现语句覆盖.基路径法是理论与应用脱节的典型,基本上没有应用价值,读者稍作了解即可,不必理解和掌握. ...
- selenium python bindings 写测试用例
这章总结selenium在UI测试方面的用法 import unittest from selenium import webdriver from selenium.webdriver.common ...
- 软件测试大牛都是这样写测试用例的,你get到了嘛?
1. 用于语句覆盖的基路径法 基路径法保证设计出的测试用例,使程序的每一个可执行语句至少执行一次,即实现语句覆盖.基路径法是理论与应用脱节的典型,基本上没有应用价值,读者稍作了解即可,不必理解和掌握. ...
- 跟我一起学Go系列:从写测试用例开始仗剑走天涯
从入门到深入 Go 我们已经走了很长的路,当你想启动多个测试类的时候你是不是想启动多个 main 方法,但是 Go 限制了在同一个 package 下只能有一个 main,所以这条路你是走不通的.那我 ...
- SpringBoot(十二):springboot2.0.2写测试用例
导入maven依赖: <dependency> <groupId>junit</groupId> <artifactId>junit</artif ...
- postman写测试用例
接口测试引用聚合数据(手机号码归属地)接口 1,点击postman左上角红框+New Collection来创建文件,用来存放测试用例 文件名为号码归属地查询(随意) 2,右击文件选择Add Req ...
随机推荐
- 笔记:C#Datatable 根据某字段数量 自动复制该行的数量
/// <summary> /// 根据Datatable某字段数量自动复制该行查询 /// </summary> /// <param name="dt&qu ...
- Networking && Internet 计网学习笔记一
Networking && Internet 计网学习笔记一 参考书籍: James F. Kurose, Keith W. Ross. 计算机网络-自顶向下方法 (7th). 机械工 ...
- SpringBoot整合Mybatis、SpringBoot整合Spring Data JPA
Springboot Mybatis <?xml version="1.0" encoding="UTF-8"?> <project xmln ...
- HGAME_2023_WEB_WP_WEEK3
Ping to the host 很明显的rce,简单测试一下发现空格,cat,:被办,且执行无回显,空格用${IFS},%09,$IFS$9等等来绕过,我们利用dnslog将执行结果外带出来,这里使 ...
- sqlmap 简单使用
sqlmap 简单使用 环境:phpstudy:MySQL5.4.7 介绍 sqlmap是一个开源的渗透测试工具,它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程.它有一个强大的检测引擎 ...
- Python常见面试题006 类方法、类实例方法、静态方法有何区别?
006. Python中类方法.类实例方法.静态方法有何区别? 全部放一个里面篇幅过大了,就拆分成1个个发布 示例代码 class Human: def __init__(self, name): s ...
- Win下依据端口排查步骤
Win下依据端口排查步骤 目录 Win下依据端口排查步骤 1 排查步骤 2 参考 今天突然发现自己电脑出现7680端口的内网连接,决定看看这个端口是做什么用的 1 排查步骤 确认7680端口连接情况与 ...
- Canvas:绘制多边形
前言 CanvasRenderingContext2D 没有提供绘制多边形的函数,所以只能由我们自己来实现绘制多边形的函数.以六边形为基础,需要用到三角函数:sin 和 cos. 点 A 坐标 (一) ...
- 基于docker的spark分布式与单线程、多线程wordcount的对比实验
1. 分布式环境搭建 1.1 基于docker的spark配置文件 docker-compose.yml version: '2' services: spark: image: docker.io/ ...
- .gitattributes 作用详细讲解
https://blog.csdn.net/qq_35425070/article/details/106883833 *.fbx filter=lfs diff=lfs merge=lfs -tex ...