Pytest 简明教程
pytest-learn
通过文章 Python 单元测试框架之 Pytest 剖解入门(第一篇) 学习 Pytest。
有很多的第三方插件可以自定义扩展,并且支持 Allure,生成可视化的测试报告和测试结果,并能输出 log 信息
说明
本文实验环境为:
- windows 7
- python 3.7.0
- pytest version 4.0.1
安装
pip install -U pytest
pytest --version # This is pytest version 4.0.1
# 安装插件
pip install pytest-html # 自动生成 HTML 格式测试报告
pip install pytest-autochecklog # 不只是自动生成测试日志
pip install pytest-describe # 给测试用例一个美丽的名字
Pycahrm 配置 Pytest
File -> Settings -> Tools -> Python Integrated Tools,在 Default test runner 中选择 Pytest 。我们可以回到写有测试函数的文件中直接右键,会出现一个Run 'py.test' for project_name,直接点击即可运行自动化测试。
Pytest 测试样例规范
- 测试文件以 test_ 开头(以 _test 结尾也可以)
- 测试类以 Test 开头,并且不能带有 init 方法
- 测试函数以 test_ 开头
- 断言使用基本的 assert 即可
创建第一个测试用例
# content of test_sample.py
def func(x):
return x + 1
def test_answer():
assert func(3) == 5
直接在该文件夹下打开命令行,输入pytest即可运行。
断言某个异常会引发
# content of test_sysexit.py
import pytest
def f():
raise SystemExit(1)
def test_mytest():
with pytest.raises(SystemExit):
f()
运行如下命令:
pytest -q test_sysexit.py # 用例通过 -q 表示 quite
在一个 class 中组合多个测试
一旦开发了多个测试,您可能希望将它们分组到一个类中。 pytest 可以轻松创建包含多个测试的类:
# content of test_class.py
class TestClass(object):
def test_one(self):
x = "this"
assert 'h' in x
def test_two(self):
x = "hello"
assert hasattr(x, 'check')
运行如下命令:
pytest -q test_class.py
为功能测试请求一个唯一的临时目录
pytest 提供 Built fixtures/function arguments 来请求任意资源,比如一个独一无二的临时目录:
# content of test_tmpdir.py
def test_needsfiles(tmpdir):
print(tmpdir)
assert 0
pytest -q test_tmpdir.py
pytest 会在测试函数调用之前,查找并调用一个fixture factory来创建这个资源。 在这个测试用例运行之前,pytest 为每个测试调用创建独一无二的目录。
关于提供的tmpdir更多的信息,可以查询Temporary diretories and files
可以通过如下命令查看自带的 pytest fixtures:
pytest --fixtures # shows builtin and custom fixtures
Note: 命令行除非加上 -v ,否则如上命令将会自动省略_开头的fixtures。
生成测试报告
pytest-html
# 安装插件
pip install -U pytest-html
运行:
pytest --html=report.html
参考
- Github-requests/requests/test
- 官宣-英文-推荐-Full pytest documentation
- 移动端自动化测试系列之二——利器pytest教程
- 测试教程网-Pytest
- 全功能Python测试框架:pytest
- Python单元测试框架之pytest -- fixtures
- 掘金-使用pytest进行测试
- CSDN-用Pytest+Allure生成漂亮的HTML图形化测试报告
- 8 个很棒的 pytest 插件
Pytest 简明教程的更多相关文章
- 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)
小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...
- 2013 duilib入门简明教程 -- 部分bug (11)
一.WindowImplBase的bug 在第8个教程[2013 duilib入门简明教程 -- 完整的自绘标题栏(8)]中,可以发现窗口最大化之后有两个问题, 1.最大化按钮的样式 ...
- 2013 duilib入门简明教程 -- 部分bug 2 (14)
上一个教程中提到了ActiveX的Bug,即如果主窗口直接用变量生成,则关闭窗口时会产生崩溃 如果用new的方式生成,则不会崩溃,所以给出一个临时的快速解决方案,即主窗口 ...
- 2013 duilib入门简明教程 -- 自绘控件 (15)
在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如 ...
- 2013 duilib入门简明教程 -- 事件处理和消息响应 (17)
界面的显示方面就都讲完啦,下面来介绍下控件的响应. 前面的教程只讲了按钮和Tab的响应,即在Notify函数里处理.其实duilib还提供了另外一种响应的方法,即消息映射DUI_BEG ...
- 2013 duilib入门简明教程 -- FAQ (19)
虽然前面的教程几乎把所有的知识点都罗列了,但是有很多问题经常在群里出现,所以这里再次整理一下. 需要注意的是,在下面的问题中,除了加上XML属性外,主窗口必须继承自WindowImpl ...
- Mac安装Windows 10的简明教程
每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...
- Docker简明教程
Docker简明教程 [编者的话]使用Docker来写代码更高效并能有效提升自己的技能.Docker能打包你的开发环境,消除包的依赖冲突,并通过集装箱式的应用来减少开发时间和学习时间. Docker作 ...
- 2013 duilib入门简明教程 -- 总结 (20)
duilib的入门系列就到尾声了,再次提醒下,Alberl用的duilib版本是SVN上第个版本,时间是2013.08.15~ 这里给出Alberl最后汇总的一个工程,戳我下载,效 ...
随机推荐
- Javascript-for循环案例-打印1-100之间所有的数字
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 关于c语言中的program_invocation_short_name
错误源自用g++的交叉编译工具链编译eudev.经过一番查找,发现在 errno.h 这个头文件中有 program_invocation_short_name 的 extern 定义. 经过查看 e ...
- leetCoder-wordBreak判断能否分词
题目 Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determ ...
- 如何让多个dz论坛共用一个用户数据库
用户数据库在论坛中是可以独立备份的,备份方法:论坛后台——站长——数据库,备份所有ucenter数据表,也就是用户数据.其他DZ论坛搭建完成以后,可以上传用户数据库,将备份文件使用上传至网站所使用的主 ...
- html5-样式表的使用-初步
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- oracle查询每隔5分钟区间内的数据量
SELECT COUNT (DISTINCT tmp.PLATE) totalNum, tmp.newTime FROM ( SELECT T .LICENSE_PLATE plate, TO_CHA ...
- 20155228 2016-2017-2 《Java程序设计》第8周学习总结
20155228 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 NIO与NIO2 NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区容量, ...
- Struts2输入校验(XML方式)
本章主要介绍struts2的XML配置方式输入校验.以下将结合一个实例程序进行说明. 代码结构: 关键代码: RegistAction.javapackage com.alfred.regist.ac ...
- JS实现input中输入数字,控制每四位加一个空格(银行卡号格式)
前言 今天来讲讲js中实现input中输入数字,控制每四位加一个空格的方法!这个主要是应用于我们在填写表单的时候,填写银行卡信息,要求我们输入的数字是四位一个空格!今天主要介绍两种方式来实现这个方法! ...
- centos-ftp搭建
参照https://blog.csdn.net/a735834365/article/details/80622105 https://blog.csdn.net/a735834365/article ...