Pytest之参数化
在unittest测试中,有参数化的概念,那么在pytest中也有。
如何理解参数化:
当对一个测试函数进行测试时,通常会给函数传递多组参数。比如测试账号登陆,我们需要模拟各种千奇百怪的账号密码。可以把这些参数写在测试函数内部进行遍历。不过虽然参数众多,但仍然是一个测试,当某组参数导致断言失败。我们想要的是一个的失败不影响其他的失败。通过参数化的方式来管理组织。那么我们看下pytest如何实现参数化的。
pytest.mark.parametrize(argnames, argvalues)
假设要测试密码的长度必须大于8位且小于16位。设计了几个密码
['123','12345678','1234567890123456','12345678901234561']
我们看下如何使用
import pytest @pytest.mark.parametrize('passwd',
['123','12345678','1234567890123456','12345678901234561']) def test_passwd_length(passwd):
assert len(passwd) >= 8
assert len(passwd)<=16
正常应该执行四个测试用例
失败用例:
符合我们预期,可以看到用参数化的思路可以减少代码编写。
如果我们要验证用户名和密码呢,两个参数如何实现呢。
import pytest @pytest.mark.parametrize('user,passwd', [
('lowen', '123'), ('lowen', '12345678'),
('lowen', '1234567890123456'),
('lowenlowen', '12345678901234561')
]) def test_passwd_length(user, passwd):
assert len(passwd) >= 8
assert len(passwd) <= 16
assert user == 'lowen'
当然还可以给每组参数增加id
import pytest @pytest.mark.parametrize('user,passwd',
[pytest.param('lowen', '123', id='User:lowen'),
pytest.param('lowen', '12345678', id='User:lowen'),
pytest.param('ll', '1234567890123456', id='User:ll'),
pytest.param('lowenlowen', '12345678901234561', id='User:lowenzishuoceshikwaifa')]) def test_passwd_length(user, passwd):
assert len(passwd) >= 8
assert len(passwd) <= 16
assert user == 'lowen'
执行结果为:
上面的都是写固定的,但是,实际的工作中呢,很多时候的参数都是实时读取的。这些参数数据都是动态读取来的,那么看下如何给参数动态传递呢,这里获取数据,写了一个demo。
import pytest def getparame() -> list:
return [('lowen', '123'), ('lowen', '12345678'), ('ll', '1234567890123456'),
('lowenzishuoceshikaifa', '12345678901234561')] @pytest.mark.parametrize('user,passwd',getparame())
def test_passwd_length(user, passwd):
assert len(passwd) >= 8
assert len(passwd) <= 16
assert user == 'lowen'
执行结果为:
Pytest之参数化的更多相关文章
- pytest 8 参数化parametrize
pytest.mark.parametrize装饰器可以实现用例参数化 1.以下是一个实现检查一定的输入和期望输出测试功能的典型例子 import pytest @pytest.mark.parame ...
- pytest.5.参数化的Fixture
From: http://www.testclass.net/pytest/parametrize_fixture/ 背景 继续上一节的测试需求,在上一节里,任何1条测试数据导致断言不通过后测试用例就 ...
- pytest的参数化
参数化有两种方式: 1. @pytest.mark.parametrize 2.利用conftest.py里的 pytest_generate_tests 1中的例子如下: @pytest.mark. ...
- pytest(8)-参数化
前言 什么是参数化,通俗点理解就是,定义一个测试类或测试函数,可以传入不同测试用例对应的参数,从而执行多个测试用例. 例如对登录接口进行测试,假设有3条用例:正确账号正确密码登录.正确账号错误密码登录 ...
- pytest的参数化测试
感觉在单元测试当中可能有用, 但在django这种框架中,用途另一说. import pytest import tasks from tasks import Task def test_add_1 ...
- pytest封神之路第五步 参数化进阶
用过unittest的朋友,肯定知道可以借助DDT实现参数化.用过JMeter的朋友,肯定知道JMeter自带了4种参数化方式(见参考资料).pytest同样支持参数化,而且很简单很实用. 语法 在& ...
- pytest和unittest中参数化如何做
参数化应用场景,一个场景的用例会用到多条数据来进行验证,比如登录功能会用到正确的用户名.密码登录,错误的用户名.正确的密码,正确的用户名.错误的密码等等来进行测试,这时就可以用到框架中的参数化,来便捷 ...
- 『德不孤』Pytest框架 — 15、Pytest参数化
目录 1.Pytest参数化说明 2.Pytest参数化方式 3.parametrize装饰器参数说明 4.Pytest参数化(单个参数) 5.Pytest参数化(多个参数) 6.ids参数说明 1. ...
- pytest学习笔记(三)
接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py ...
- 【Python】【自动化测试】【pytest】
https://docs.pytest.org/en/latest/getting-started.html#create-your-first-test http://www.testclass.n ...
随机推荐
- 关于 MySQL 的 General Log 功能
检查 General Log 输出目标 SHOW GLOBAL VARIABLES LIKE 'log_output'; # Type: Set # Default Value: FILE # Val ...
- SQL server数据库 账户SA登录失败,提示错误:18456
在我们使用数据库的时候,偶尔会遇到一些登录上的错误提示.比如,在数据库配置上没有正确开启用户的登录策略以及服务器身份验证模式时,就会提示"用户'sa'登录失败.(Microsoft SQL ...
- winform高dpi问题探索
winform的高dpi适应问题由来已久,属于一个历史遗留问题.主要是由于winform对不同尺寸.不同分辨率的屏幕适配不足造成的.接下来我们简单说一下如何解决,最后我们探索一下解决此问题的原理. ...
- Linux常用命令-Java web环境
Linux 常用命令 大部分命令推荐sudo运行 端口和PID互查 # 根据端口查询PID $ lsof -i:8080 # 根据端口查询PID $ fuser -i 8080/tcp # 根据PID ...
- 深度剖析CPython解释器》Python内存管理深度剖析Python内存管理架构、内存池的实现原理
目录 1.楔子 第1层:基于第0层的"通用目的内存分配器"包装而成. 第2层:在第1层提供的通用 *PyMem_* 接口基础上,实现统一的对象内存分配(object.tp_allo ...
- Vue中使用model属性
model属性接收两个参数 类型:{ prop?: string, event?: string } prop 也就是调用该组件的父组件中使用v-model指令绑定的属性 event 对应的是修改pr ...
- python之路3:文件操作和函数基础
文件操作 字符编码解码 函数基础 内置函数 一.文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件的模式有: r,只读模式(默认). w,只写 ...
- jenkins 2.282+Publish over ssh 1.22版本发布日志不能实时显示
问题解决了.作个记录,最新的 [Publish Over SSH]插件1.22版本,jenkins 282版本.1. ssh server 的Verbose output in console要开启2 ...
- unity VideoPlayer 视频静音
standVideo.SetDirectAudioMute(0,true);
- 把linux云服务器上的文件放到本地电脑windows上-----secureCRT
1.本地电脑需要安装SecureCRT 2.在secureCRT上登录云端服务器,右键点击云端服务器上方的ip地址,选择"connect SFTP session" 3.在SFTP ...