pytest的参数化测试
感觉在单元测试当中可能有用,
但在django这种框架中,用途另一说。
- import pytest
- import tasks
- from tasks import Task
- def test_add_1():
- task = Task('breathe', 'Brian', True)
- task_id = tasks.add(task)
- t_from_db = tasks.get(task_id)
- assert equivalent(t_from_db, task)
- @pytest.mark.parametrize('task',
- [Task('sleep', done=True),
- Task('wake', 'brian'),
- Task('breath', 'BRIAN', True),
- Task('exercise', 'BrIaN', False)])
- def test_add_2(task):
- task_id = tasks.add(task)
- t_from_db = tasks.get(task_id)
- assert equivalent(t_from_db, task)
- @pytest.mark.parametrize('summary, owner, done',
- [('sleep', None, False),
- ('wake', 'brian', False),
- ('breath', 'BRIAN', True),
- ('eat eggs', 'BrIaN', False),
- ])
- def test_add_3(summary, owner, done):
- task = Task(summary, owner, done)
- task_id = tasks.add(task)
- t_from_db = tasks.get(task_id)
- assert equivalent(t_from_db, task)
- tasks_to_try = (Task('sleep', done=True),
- Task('wake', 'brian'),
- Task('breath', 'BRIAN', True),
- Task('exercise', 'BrIaN', False))
- @pytest.mark.parametrize('task', tasks_to_try)
- def test_add_4(task):
- task_id = tasks.add(task)
- t_from_db = tasks.get(task_id)
- assert equivalent(t_from_db, task)
- task_ids = ['Task({},{},{})'.format(t.summary, t.owner, t.done)
- for t in tasks_to_try]
- @pytest.mark.parametrize('task', tasks_to_try, ids=task_ids)
- def test_add_5(task):
- task_id = tasks.add(task)
- t_from_db = tasks.get(task_id)
- assert equivalent(t_from_db, task)
- @pytest.mark.parametrize('task', [
- pytest.param(Task('create'), id='just summary'),
- pytest.param(Task('inspire', 'Michelle'), id='summary/owner'),
- pytest.param(Task('encourage', 'Michelle', True), id='summary/owner/done'),])
- def test_add_6(task):
- task_id = tasks.add(task)
- t_from_db = tasks.get(task_id)
- assert equivalent(t_from_db, task)
- @pytest.mark.parametrize('task', tasks_to_try, ids=task_ids)
- class TestAdd:
- def test_equivalent(self, task):
- task_id = tasks.add(task)
- t_from_db = tasks.get(task_id)
- assert equivalent(t_from_db, task)
- def test_valid_id(self, task):
- task_id = tasks.add(task)
- t_from_db = tasks.get(task_id)
- assert t_from_db.id == task_id
- def equivalent(t1, t2):
- return (t1.summary == t2.summary) and (t1.owner == t2.owner) and (t1.done == t2.done)
- @pytest.fixture(autouse=True)
- def initialized_tasks_db(tmpdir):
- tasks.start_tasks_db(str(tmpdir), 'tiny')
- yield
- tasks.stop_tasks_db()
pytest的参数化测试的更多相关文章
- Pytest 学习(二十五)- 解决pytest参数化测试标题都一样问题
前言 使用参数化测试化后,allure的报告如下显示: 源代码如下: # -*- coding: utf-8 -*- # @Time : 2020/12/13 17:27 # @Author : lo ...
- Python 中如何实现参数化测试?
Python 中如何实现参数化测试? 之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest.nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架. 本文 ...
- Google C++单元测试框架GoogleTest---值参数化测试
值参数化测试允许您使用不同的参数测试代码,而无需编写同一测试的多个副本. 假设您为代码编写测试,然后意识到您的代码受到布尔参数的影响. TEST(MyCodeTest, TestFoo) { // A ...
- JMeter学习-026-JMeter 分布式(远程)参数化测试实例
以前文所述对文章详情的HTTP请求进行性能测试为例.日常实际场景中,不可能所有的人都在同时访问一篇文章,而是多人访问不同的文章,因而需要对文章编号进行参数化,以更好的模拟日常的性能测试场景.同时,因文 ...
- Junit4参数化测试实现程序与用例数据分离
http://touchfu.iteye.com/blog/732930 现状:你是不是还在为自己的TestCase代码杂乱无章而苦恼,咎其根本还在于针对不同的用例,输入参数和mock信息的组装全部作 ...
- 同时使用Junit4的@Parameterized参数化测试和Spring容器
转载:http://www.jianshu.com/p/d191fe54915f 整合Spring容器 @SpringApplicationConfiguration(classes = Applic ...
- MSTest不支持参数化测试的解决方案
之前的项目中做单元测试一直用的是NUnit,这次做新项目,负责人要求统一用MsTest,理由是MsTest是Visual Studio内置的.用就用吧,我没什么意见.不过用了两天,我就发现一个大问题: ...
- 用JUnit4进行参数化测试
参数化测试是一个JUnit 3不具备的功能. 基本使用方法 @RunWith 当类被@RunWith注解修饰,或者类继承了一个被该注解修饰的类,JUnit将会使用这个注解所指明的运行器(runner) ...
- junit参数化测试的使用方法
JUnit参数化测试的五个步骤:(1)为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized.(2)为测试类声明几个变量,分别用于存放期望值和测试 ...
随机推荐
- python的内置模块time和datetime的方法详解以及使用(python内的time和datetime时间格式)
time内置模块的方法 1.time() 时间戳 time() -> floating point number 浮点数 Return the current time in seconds ...
- linux(ubuntu) mysql安装使用
简单的安装一下: sudo apt-get install mysql-server apt-get isntall mysql-client sudo apt-get install libmysq ...
- Docker 基础知识
Docker Docker 是什么 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是 ...
- python---django中权限框架设计
一:admin下的权限了解 推文:如何正确使用 Django的User Model (一)默认权限表是在自带auth模块,中permission表中 可以使用has_perm方法获取用户是否有这个权限 ...
- 2015/11/5用Python写游戏,pygame入门(5):面向对象的游戏设计
昨天的内容里有了运动的子弹,虽然我们只添加了一个子弹,但你可以看到我们需要记录子弹的x,y坐标,每次要更新它的坐标.如果我们想要有多颗子弹,就需要存储多个坐标.那时候处理起来就不显得那么简单,也许我们 ...
- [整理]基于bootstrap的文本编辑器
http://www.bootcss.com/p/bootstrap-wysiwyg/ http://jhollingworth.github.io/bootstrap-wysihtml5/ http ...
- JavaScript 运行机制之执行顺序详解
JavaScript是一种描述型脚本语言,它不同于 Java 或 C# 等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行.如果你不能理解 JavaScript 语言的运行机制 ...
- Jquery Ajax自定义无刷新提交表单Form
Jquery的$.ajax方法可以实现ajax调用,要设置url,post,参数等. 如果要提交现有Form需要写很多代码,何不直接将Form的提交直接转移到ajax中呢. 以前的处理方法 如Form ...
- bzoj 2111 [ZJOI2010]Perm 排列计数(DP+lucas定理)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2111 [题意] 给定n,问1..n的排列中有多少个可以构成小根堆. [思路] 设f[i ...
- c++的类型转换(转)
类型转换机制可以分为:隐式类型转换 和 显示类型转换(强制类型转换) C中的类型转换: 事情要从头说起,这个头就是C语言.我们已经习惯了使用C-like类型转换,因为它强大而且简单. 主要有以下两种形 ...